initial checkin
[m6w6/hikke] / tests / hikke / EventTest.php
1 <?php
2
3 namespace hikke;
4
5 require_once __DIR__."/../../vendor/autoload.php";
6 require_once __DIR__."/TestObserver.php";
7
8 class EventTest extends \PHPUnit_Framework_TestCase
9 {
10 function setUp() {
11 TestObserver::reset();
12 }
13
14 function testBasic() {
15 $first = new Event("first", 1);
16 $second = new Event("second", 2);
17
18 $this->assertEquals(-1, $first->compareTo($second));
19 $this->assertEquals(1, $second->compareTo($first));
20
21 $this->assertEquals("first", $first->getName());
22 $this->assertEquals("second", $second->getName());
23 }
24
25 function testAttachDetach() {
26 $event = new Event("event");
27 $observer = new TestObserver("observer");
28 $this->assertEquals($event, $event->attach($observer));
29 $this->assertTrue($event->detach($observer));
30 $this->assertFalse($event->detach($observer));
31 }
32
33 function testNotify() {
34 $event = new Event("event");
35 $event->attach(new TestObserver("first"));
36 $event->attach(new TestObserver("second"));
37 $event->attach(new TestObserver("third"));
38 $event->notify();
39 $this->assertEquals(
40 "first: event\n".
41 "second: event\n".
42 "third: event\n", TestObserver::$logs);
43 }
44
45 function testPrioritizedNotify() {
46 $event = new Event("event");
47 $event->attach(new TestObserver("first"),3);
48 $event->attach(new TestObserver("second"),2);
49 $event->attach(new TestObserver("third"),1);
50 $event->notify();
51 $this->assertEquals(
52 "third: event\n".
53 "second: event\n".
54 "first: event\n", TestObserver::$logs);
55 }
56 }