/** * Method to test register(). * * @return void * * @covers Windwalker\Provider\CliProvider::register */ public function testRegister() { $container = new Container(); $provider = new CliProvider(); $container->set('windwalker.config', new Registry(array('bundle' => array()))); $provider->register($container); $this->assertInstanceOf('Windwalker\\Console\\Application\\Console', $container->get('app')); $this->assertInstanceOf('Windwalker\\Console\\Application\\Console', $container->get('Windwalker\\Console\\Application\\Console')); $this->assertSame($container->get('app')->getIO(), $container->get('io')); $this->assertInstanceOf('Windwalker\\Console\\IO\\IO', $container->get('io')); $this->assertInstanceOf('Windwalker\\Console\\IO\\IO', $container->get('input')); $this->assertInstanceOf('Windwalker\\Console\\IO\\IO', $container->get('Windwalker\\Console\\IO\\IO')); }
/** * testDump * * @covers \Windwalker\DI\Container::dump() */ public function testDump() { // Not shared $this->instance->set('foo', function () { return new \ArrayObject(); }, false, false); $this->instance->get('foo'); $dumpResult = $this->instance->dump(); $this->assertEquals(0, count($dumpResult['data'])); // Shared $this->instance->set('bar', function () { return new \ArrayObject(); }, true, false); $this->instance->get('bar'); $dumpResult = $this->instance->dump(); $this->assertEquals(1, count($dumpResult['data'])); }
/** * Method to test createObject(). * * @return void * * @covers Windwalker\DI\Container::createObject */ public function testcreateObject() { $container = new Container(); $foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo'); $this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\Foo', $foo); $this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\Bar', $foo->bar); $this->assertInstanceOf('SplPriorityQueue', $foo->bar->queue); $this->assertInstanceOf('SplStack', $foo->bar->stack); // Bind a sub class $container = new Container(); $container->share('SplStack', new StubStack()); $foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo'); $this->assertInstanceOf('Windwalker\\DI\\Test\\Mock\\StubStack', $foo->bar->stack); // Bind not shared classes $container = new Container(); $container->set('SplPriorityQueue', function () { return new \SplPriorityQueue(); }); $queue = $container->get('SplPriorityQueue'); $foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo'); $this->assertNotSame($queue, $foo->bar->queue, 'Non shared class should be not same.'); // Auto create classes should be not shared $container = new Container(); $bar1 = $container->createObject('Windwalker\\DI\\Test\\Mock\\Bar'); $bar2 = $container->createObject('Windwalker\\DI\\Test\\Mock\\Bar2'); $this->assertNotSame($bar1->queue, $bar2->queue); // Not shared object $container = new Container(); $foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo'); $foo2 = $container->get('Windwalker\\DI\\Test\\Mock\\Foo'); $this->assertNotSame($foo, $foo2); // Shared object $container = new Container(); $foo = $container->createObject('Windwalker\\DI\\Test\\Mock\\Foo', true); $foo2 = $container->get('Windwalker\\DI\\Test\\Mock\\Foo'); $this->assertSame($foo, $foo2); }