Exemplo n.º 1
0
    /**
     * 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);
    }
Exemplo n.º 2
0
 /**
  * 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);
 }
Exemplo n.º 3
0
 /**
  * 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);
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 /**
  * 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;
 }