/** * Tests the buildInlineCode() method. * @covers \ManiaScript\Builder\Event\Handler\Timer::buildInlineCode */ public function testBuildInlineCode() { $event1 = new TimerEvent(); $event1->setName('abc')->setCode('def')->setInline(true); $event2 = new TimerEvent(); $event2->setName('ghi')->setCode('jkl')->setInline(false); $queue = new PriorityQueue(); $queue->add($event1)->add($event2); $expectedInlineCode = <<<EOT foreach (Time => Name in pqr) { if (Time <= CurrentTime) { switch (Name) { case "abc": { def } case "ghi": { mno } } declare Temp = pqr.removekey(Time); } } EOT; /* @var $handler \ManiaScript\Builder\Event\Handler\Timer|\PHPUnit_Framework_MockObject_MockObject */ $handler = $this->getMockBuilder('ManiaScript\\Builder\\Event\\Handler\\Timer')->setMethods(array('buildHandlerFunctionCall', 'getTimersVariableName'))->setConstructorArgs(array(new Builder()))->getMock(); $handler->expects($this->once())->method('buildHandlerFunctionCall')->with($event2)->will($this->returnValue('mno')); $handler->expects($this->once())->method('getTimersVariableName')->will($this->returnValue('pqr')); $this->injectProperty($handler, 'events', $queue); $result = $this->invokeMethod($handler, 'buildInlineCode'); $this->assertEquals($expectedInlineCode, $result); }
/** * Tests the buildGlobalCode() method. * @covers \ManiaScript\Builder\Event\Handler\PseudoHandler::buildGlobalCode */ public function testBuildGlobalCode() { $event1 = new Event(); $event1->setCode('abc'); $event2 = new Event(); $event2->setCode('def')->setInline(true); $queue = new PriorityQueue(); $queue->add($event1)->add($event2); /* @var $handler \ManiaScript\Builder\Event\Handler\PseudoHandler|\PHPUnit_Framework_MockObject_MockObject */ $handler = $this->getMockBuilder('ManiaScript\\Builder\\Event\\Handler\\PseudoHandler')->setMethods(array('buildHandlerFunction'))->setConstructorArgs(array(new Builder()))->getMockForAbstractClass(); $handler->expects($this->once())->method('buildHandlerFunction')->with($event1)->will($this->returnValue('ghi')); $this->injectProperty($handler, 'events', $queue); $result = $this->invokeMethod($handler, 'buildGlobalCode'); $this->assertContains('ghi', $result); }
/** * Tests the mergeEvents() method. * @covers \ManiaScript\Builder\Event\Handler\Custom::mergeEvents */ public function testMergeEvents() { $event1 = new CustomEvent(); $event1->setName('abc')->setCode('def')->setInline(true); $event2 = new CustomEvent(); $event2->setName('ghi')->setCode('jkl')->setInline(true); $event3 = new CustomEvent(); $event3->setName('abc')->setCode('mno')->setInline(false); $expectedResult = array('abc' => 'def' . PHP_EOL . 'pqr' . PHP_EOL, 'ghi' => 'jkl' . PHP_EOL); $queue = new PriorityQueue(); $queue->add($event1)->add($event2)->add($event3); /* @var $handler \ManiaScript\Builder\Event\Handler\Custom|\PHPUnit_Framework_MockObject_MockObject */ $handler = $this->getMockBuilder('ManiaScript\\Builder\\Event\\Handler\\Custom')->setMethods(array('buildHandlerFunctionCall'))->setConstructorArgs(array(new Builder()))->getMock(); $handler->expects($this->once())->method('buildHandlerFunctionCall')->with($event3)->will($this->returnValue('pqr')); $result = $this->invokeMethod($handler, 'mergeEvents', array($queue)); $this->assertEquals($expectedResult, $result); }
/** * Adds a new event ot the handler. * @param \ManiaScript\Builder\Event\AbstractEvent $event The event. * @return $this Implementing fluent interface. */ public function addEvent(AbstractEvent $event) { $this->events->add($event); return $this; }
/** * Adds code to the global scope. * @param \ManiaScript\Builder\Code $code The code. * @return $this Implementing fluent interface. */ public function addGlobalCode(Code $code) { $this->globalCodes->add($code); return $this; }