public function testFullConfigLoad()
{
$extension = new SncRedisExtension();
$config = $this->parseYaml($this->getFullYamlConfig());
$extension->load(array($config), $container = $this->getContainer());
$this->assertTrue($container->hasDefinition('snc_redis.logger'));
$this->assertTrue($container->hasDefinition('snc_redis.data_collector'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.default_parameters.default'));
$this->assertTrue($container->hasDefinition('snc_redis.client.default_profile'));
$this->assertTrue($container->hasDefinition('snc_redis.client.default_options'));
$this->assertTrue($container->hasDefinition('snc_redis.default'));
$this->assertTrue($container->hasAlias('snc_redis.default_client'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.cache_parameters.cache'));
$this->assertTrue($container->hasDefinition('snc_redis.client.cache_profile'));
$this->assertTrue($container->hasDefinition('snc_redis.client.cache_options'));
$this->assertTrue($container->hasDefinition('snc_redis.cache'));
$this->assertTrue($container->hasAlias('snc_redis.cache_client'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.monolog_parameters.monolog'));
$this->assertTrue($container->hasDefinition('snc_redis.client.monolog_profile'));
$this->assertTrue($container->hasDefinition('snc_redis.client.monolog_options'));
$this->assertTrue($container->hasDefinition('snc_redis.monolog'));
$this->assertTrue($container->hasAlias('snc_redis.monolog_client'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.cluster1_parameters.cluster'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.cluster2_parameters.cluster'));
$this->assertTrue($container->hasDefinition('snc_redis.connection.cluster3_parameters.cluster'));
$this->assertTrue($container->hasDefinition('snc_redis.client.cluster_profile'));
$this->assertTrue($container->hasDefinition('snc_redis.client.cluster_options'));
$this->assertTrue($container->hasDefinition('snc_redis.cluster'));
$this->assertTrue($container->hasAlias('snc_redis.cluster_client'));
$this->assertTrue($container->hasDefinition('snc_redis.session.handler'));
$this->assertTrue($container->hasDefinition('doctrine.orm.default_metadata_cache'));
$this->assertTrue($container->hasDefinition('doctrine.orm.default_result_cache'));
$this->assertTrue($container->hasDefinition('doctrine.orm.default_query_cache'));
$this->assertTrue($container->hasDefinition('doctrine.orm.default_second_level_cache.region_cache_driver'));
$this->assertTrue($container->hasDefinition('doctrine.orm.read_result_cache'));
$this->assertTrue($container->hasDefinition('doctrine.odm.mongodb.default_metadata_cache'));
$this->assertTrue($container->hasDefinition('doctrine.odm.mongodb.default_result_cache'));
$this->assertTrue($container->hasDefinition('doctrine.odm.mongodb.default_query_cache'));
$this->assertTrue($container->hasDefinition('doctrine.odm.mongodb.slave1_result_cache'));
$this->assertTrue($container->hasDefinition('doctrine.odm.mongodb.slave2_result_cache'));
$this->assertTrue($container->hasDefinition('snc_redis.monolog'));
$this->assertTrue($container->hasAlias('snc_redis.monolog_client'));
$this->assertTrue($container->hasDefinition('snc_redis.monolog.handler'));
$this->assertTrue($container->hasDefinition('snc_redis.swiftmailer.spool'));
$this->assertTrue($container->hasAlias('swiftmailer.spool.redis'));
$this->assertInternalType('array', $container->findTaggedServiceIds('snc_redis.client'));
$this->assertGreaterThanOrEqual(4, $container->findTaggedServiceIds('snc_redis.client'), 'expected at least 4 tagged clients');
$tags = $container->findTaggedServiceIds('snc_redis.client');
$this->assertArrayHasKey('snc_redis.default', $tags);
$this->assertArrayHasKey('snc_redis.cache', $tags);
$this->assertArrayHasKey('snc_redis.monolog', $tags);
$this->assertArrayHasKey('snc_redis.cluster', $tags);
$this->assertArraySubset(array('snc_redis.cache' => array(array('alias' => 'cache'))), $tags);
$this->assertArraySubset(array('snc_redis.cluster' => array(array('alias' => 'cluster'))), $tags);
}