99 lines
2.3 KiB
PHP
99 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Engelsystem\Test\Config;
|
||
|
|
||
|
use Engelsystem\Container\Container;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
|
||
|
class ContainerTest extends TestCase
|
||
|
{
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::get
|
||
|
*/
|
||
|
public function testGet()
|
||
|
{
|
||
|
$container = new Container();
|
||
|
$class = new class
|
||
|
{
|
||
|
};
|
||
|
|
||
|
$container->instance('foo', $class);
|
||
|
$this->assertSame($class, $container->get('foo'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::get
|
||
|
* @expectedException \Engelsystem\Container\NotFoundException
|
||
|
*/
|
||
|
public function testGetException()
|
||
|
{
|
||
|
$container = new Container();
|
||
|
|
||
|
$container->get('not.registered.service');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::instance
|
||
|
* @covers \Engelsystem\Container\Container::resolve
|
||
|
*/
|
||
|
public function testInstance()
|
||
|
{
|
||
|
$container = new Container();
|
||
|
$class = new class
|
||
|
{
|
||
|
};
|
||
|
|
||
|
$container->instance('foo', $class);
|
||
|
$this->assertSame($class, $container->get('foo'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::has
|
||
|
*/
|
||
|
public function testHas()
|
||
|
{
|
||
|
$container = new Container();
|
||
|
|
||
|
$this->assertFalse($container->has('test'));
|
||
|
|
||
|
$class = new class
|
||
|
{
|
||
|
};
|
||
|
|
||
|
$container->instance('test', $class);
|
||
|
$this->assertTrue($container->has('test'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::singleton
|
||
|
*/
|
||
|
public function testSingleton()
|
||
|
{
|
||
|
$container = new Container();
|
||
|
$class = new class
|
||
|
{
|
||
|
};
|
||
|
|
||
|
$container->singleton('foo', $class);
|
||
|
$this->assertSame($class, $container->get('foo'));
|
||
|
$this->assertSame($class, $container->get('foo'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Container\Container::setInstance
|
||
|
* @covers \Engelsystem\Container\Container::getInstance
|
||
|
*/
|
||
|
public function testContainerSingleton()
|
||
|
{
|
||
|
$container0 = new Container();
|
||
|
$container = Container::getInstance();
|
||
|
|
||
|
$this->assertNotSame($container0, $container);
|
||
|
|
||
|
$container1 = new Container;
|
||
|
Container::setInstance($container1);
|
||
|
|
||
|
$this->assertSame($container1, Container::getInstance());
|
||
|
}
|
||
|
}
|