public function testShouldInitializeOnce()
{
// Arrange
$manager = new Manager();
$this->callProtected($manager, 'init');
// Assertion
$this->assertAttributeEquals($manager, 'singleton', Manager::class);
$this->assertAttributeInstanceOf(Container::class, 'container', $manager);
$this->assertAttributeInstanceOf(Pool::class, 'connectionPool', $manager);
$this->assertAttributeInstanceOf(CacheComponentInterface::class, 'cacheComponent', $manager);
$container = $manager->container;
$this->callProtected($manager, 'init');
// Initializes again to make sure that it will not instantiate a new container
$this->assertAttributeEquals($container, 'container', $manager);
}