$t->ok($builder->hasService('bar'), '->setAlias() defines a new service');
$t->ok($builder->getService('bar') === $builder->getService('foo'), '->setAlias() creates a service that is an alias to another one');
// ->getAliases()
$t->diag('->getAliases()');
$builder = new sfServiceContainerBuilder();
$builder->setAlias('bar', 'foo');
$builder->setAlias('foobar', 'foo');
$t->is($builder->getAliases(), array('bar' => 'foo', 'foobar' => 'foo'), '->getAliases() returns all service aliases');
$builder->register('bar', 'stdClass');
$t->is($builder->getAliases(), array('foobar' => 'foo'), '->getAliases() does not return aliased services that have been overridden');
$builder->setService('foobar', 'stdClass');
$t->is($builder->getAliases(), array(), '->getAliases() does not return aliased services that have been overridden');
// ->hasService()
$t->diag('->hasService()');
$builder = new sfServiceContainerBuilder();
$t->ok(!$builder->hasService('foo'), '->hasService() returns false if the service does not exist');
$builder->register('foo', 'FooClass');
$t->ok($builder->hasService('foo'), '->hasService() returns true if a service definition exists');
$builder->setAlias('foobar', 'foo');
$t->ok($builder->hasService('foo'), '->hasService() returns true if a service definition exists');
$builder->setService('bar', new stdClass());
$t->ok($builder->hasService('bar'), '->hasService() returns true if a service exists');
$builder->setAlias('foobar2', 'foo');
$t->ok($builder->hasService('foobar2'), '->hasService() returns true if a service exists');
// ->getService()
$t->diag('->getService()');
$builder = new sfServiceContainerBuilder();
try {
    $builder->getService('foo');
    $t->fail('->getService() throws an InvalidArgumentException if the service does not exist');
} catch (InvalidArgumentException $e) {
}
$builder->register('foobar', 'stdClass')->setShared(true);
$t->ok($builder->getService('bar') === $builder->getService('bar'), '->getService() always returns the same instance if the service is shared');
// ->getServiceIds()
$t->diag('->getServiceIds()');
$builder = new sfServiceContainerBuilder();
$builder->register('foo', 'stdClass');
$builder->bar = $bar = new stdClass();
$builder->register('bar', 'stdClass');
$t->is($builder->getServiceIds(), array('foo', 'bar', 'service_container'), '->getServiceIds() returns all defined service ids');
// ->setAlias()
$t->diag('->setAlias()');
$builder = new sfServiceContainerBuilder();
$builder->register('foo', 'stdClass');
$builder->setAlias('bar', 'foo');
$t->ok($builder->hasService('bar'), '->setAlias() defines a new service');
$t->ok($builder->getService('bar') === $builder->getService('foo'), '->setAlias() creates a service that is an alias to another one');
// ->getAliases()
$t->diag('->getAliases()');
$builder = new sfServiceContainerBuilder();
$builder->setAlias('bar', 'foo');
$builder->setAlias('foobar', 'foo');
$t->is($builder->getAliases(), array('bar' => 'foo', 'foobar' => 'foo'), '->getAliases() returns all service aliases');
$builder->register('bar', 'stdClass');
$t->is($builder->getAliases(), array('foobar' => 'foo'), '->getAliases() does not return aliased services that have been overridden');
$builder->setService('foobar', 'stdClass');
$t->is($builder->getAliases(), array(), '->getAliases() does not return aliased services that have been overridden');
// ->createService() # file
$t->diag('->createService() # file');
$builder = new sfServiceContainerBuilder();
$builder->register('foo1', 'FooClass')->setFile(dirname(__FILE__) . '/fixtures/includes/foo.php');