$builder->register('baz', 'stdClass')->setArguments(array(new sfServiceReference('baz')));
try {
    @$builder->getService('baz');
    $t->fail('->getService() throws a LogicException if the service has a circular reference to itself');
} catch (LogicException $e) {
    $t->pass('->getService() throws a LogicException if the service has a circular reference to itself');
}
$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');
// ->createService() # file
$t->diag('->createService() # file');
$builder = new sfServiceContainerBuilder();
$builder->register('foo1', 'FooClass')->setFile(dirname(__FILE__) . '/fixtures/includes/foo.php');
$t->ok($builder->getService('foo1'), '->createService() requires the file defined by the service definition');
$builder->register('foo2', 'FooClass')->setFile(dirname(__FILE__) . '/fixtures/includes/%file%.php');
$builder->setParameter('file', 'foo');
$t->ok($builder->getService('foo2'), '->createService() replaces parameters in the file provided by the service definition');
// ->createService() # class
$t->diag('->createService() # class');
$builder = new sfServiceContainerBuilder();
$builder->register('foo1', '%class%');
$builder->setParameter('class', 'stdClass');
$t->ok($builder->getService('foo1') instanceof stdClass, '->createService() replaces parameters in the class provided by the service definition');
// ->createService() # arguments