PHP Classes

File: tests/Wingu/OctopusCore/EventDispatcher/Tests/Unit/EventTest.php

Recommend this page to a friend!
  Classes of Protung Dragos   PHP Event Dispatcher   tests/Wingu/OctopusCore/EventDispatcher/Tests/Unit/EventTest.php   Download  
File: tests/Wingu/OctopusCore/EventDispatcher/Tests/Unit/EventTest.php
Role: Unit test script
Content type: text/plain
Description:
Class: PHP Event Dispatcher
Register events and call registered listeners
Author: By
Last change: Initial commit
Date: 2 years ago
Size: 3,636 bytes
 

Contents

Class file image Download
<?php

namespace Wingu\OctopusCore\EventDispatcher\Tests\Unit;

use
Wingu\OctopusCore\EventDispatcher\Event;

class
EventTest extends TestCase {

    public function
getDataEventNames() {
        return array(
            [
'', ''], [null, ''],
            [
'myEvent', 'myEvent'], ['system.log.db', 'system.log.db']
        );
    }

   
/**
     * @dataProvider getDataEventNames
     */
   
public function testToString($eventName, $expected) {
       
$event = new Event(null);
       
$event->setName($eventName);
       
$this->assertSame($expected, (string)$event);
    }

    public function
testStopPropagation() {
       
$event = new Event(null);

       
$this->assertFalse($event->isPropagationStopped());

       
$event->stopPropagation();
       
$this->assertTrue($event->isPropagationStopped());
    }

    public function
getDataSender() {
        return array(
            [
null],[1],['some string'],[new \stdClass()],[$this],[STDIN],[array(1,2,3)]
        );
    }

   
/**
     * @dataProvider getDataSender
     */
   
public function testSetGetSender($sender) {
       
$event = new Event($sender);
       
$this->assertSame($sender, $event->getSender());
    }

    public function
testGetArgumentsDefaultValue() {
       
$args = [];
       
$event = new Event(null, $args);

       
$this->assertNull($event->getArgument('inexistent_arg'));
       
$this->assertTrue($event->getArgument('inexistent_arg', true));
       
$this->assertFalse($event->getArgument('inexistent_arg', false));
       
$this->assertSame('some_string', $event->getArgument('inexistent_arg', 'some_string'));
       
$this->assertSame(STDERR, $event->getArgument('inexistent_arg', STDERR));
       
$this->assertSame(array(), $event->getArgument('inexistent_arg', array()));
       
$this->assertSame(array(1,2,[]), $event->getArgument('inexistent_arg', array(1,2,[])));
       
$this->assertSame(123, $event->getArgument('inexistent_arg', 123));

       
$this->assertFalse(isset($event['inexistent_arg']));
    }

    public function
testGetArguments() {
       
$stdClass = new \stdClass();
       
$args = array(
           
'null' => null,
           
'integer' => 123,
           
'float' => -123.456,
           
'array' => [1,2,3],
           
'obj' => $stdClass,
           
'string' => 'some_string',
           
'false' => false,
           
'true' => true,
        );
       
$event = new Event(null, $args);

       
$this->assertNull($event->getArgument('null'));
       
$this->assertNull($event->getArgument('null', true));
       
$this->assertSame(123, $event->getArgument('integer'));
       
$this->assertSame(-123.456, $event->getArgument('float'));
       
$this->assertSame([1,2,3], $event->getArgument('array'));
       
$this->assertSame($stdClass, $event->getArgument('obj'));
       
$this->assertFalse($event->getArgument('false'));
       
$this->assertFalse($event->getArgument('false', true));
       
$this->assertTrue($event->getArgument('true'));
       
$this->assertTrue($event->getArgument('true'), false);

       
$this->assertSame($args, $event->getArguments());
    }

    public function
getDataSetArgument() {
        return array(
            [
'null', null], ['integer', 123], ['float', -123.456], ['array', [1,2,3]],
            [
'obj', new \stdClass()], ['string', 'some_string'], ['false', false], ['true', true]
        );
    }

   
/**
     * @dataProvider getDataSetArgument
     */
   
public function testSetArguments($name, $value) {
       
$event = new Event(null);

       
$event->setArgument($name, $value);
       
$this->assertSame($value, $event->getArgument($name));
    }
}