* (c) Fabien Potencier <*****@*****.**>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
require_once dirname(__FILE__) . '/../../bootstrap/unit.php';
$t = new lime_test(48);
// ->setServiceDefinitions() ->addServiceDefinitions() ->getServiceDefinitions() ->setServiceDefinition() ->getServiceDefinition() ->hasServiceDefinition()
$t->diag('->setServiceDefinitions() ->addServiceDefinitions() ->getServiceDefinitions() ->setServiceDefinition() ->getServiceDefinition() ->hasServiceDefinition()');
$builder = new sfServiceContainerBuilder();
$definitions = array('foo' => new sfServiceDefinition('FooClass'), 'bar' => new sfServiceDefinition('BarClass'));
$builder->setServiceDefinitions($definitions);
$t->is($builder->getServiceDefinitions(), $definitions, '->setServiceDefinitions() sets the service definitions');
$t->ok($builder->hasServiceDefinition('foo'), '->hasServiceDefinition() returns true if a service definition exists');
$t->ok(!$builder->hasServiceDefinition('foobar'), '->hasServiceDefinition() returns false if a service definition does not exist');
$builder->setServiceDefinition('foobar', $foo = new sfServiceDefinition('FooBarClass'));
$t->is($builder->getServiceDefinition('foobar'), $foo, '->getServiceDefinition() returns a service definition if defined');
$t->ok($builder->setServiceDefinition('foobar', $foo = new sfServiceDefinition('FooBarClass')) === $foo, '->setServiceDefinition() implements a fuild interface by returning the service reference');
$builder->addServiceDefinitions($defs = array('foobar' => new sfServiceDefinition('FooBarClass')));
$t->is($builder->getServiceDefinitions(), array_merge($definitions, $defs), '->addServiceDefinitions() adds the service definitions');
try {
    $builder->getServiceDefinition('baz');
    $t->fail('->getServiceDefinition() throws an InvalidArgumentException if the service definition does not exist');
} catch (InvalidArgumentException $e) {
    $t->pass('->getServiceDefinition() throws an InvalidArgumentException if the service definition does not exist');
}
// ->register()
$t->diag('->register()');
$builder = new sfServiceContainerBuilder();
$builder->register('foo', 'FooClass');
$t->ok($builder->hasServiceDefinition('foo'), '->register() registers a new service definition');