<?php
/**
* Test: NetteDIContainer errors usage.
*
* @author David Grudl
* @package NetteDI
* @subpackage UnitTests
*/
use NetteDIContainer;
require __DIR__ . '/../bootstrap.php';
$service = (object) null;
$container = new Container;
assert::
throws(function() use
($container,
$service) {
$container->addService(null, $service);
}, 'NetteInvalidArgumentException', 'Service name must be a non-empty string, NULL given.');
assert::
throws(function() use
($container) {
$container->addService('one', null);
}, 'NetteInvalidArgumentException', 'Invalid callback.');
assert::
throws(function() use
($container) {
$container->getService('one');
}, 'NetteDIMissingServiceException', "Service 'one' not found.");
assert::
throws(function() use
($container,
$service) {
$container->addService('one', $service);
$container->addService('one', $service);
}, 'NetteInvalidStateException', "Service 'one' has already been registered.");
assert::
throws(function() use
($container,
$service) {
$container->freeze();
$container->addService('two', $service);
}, 'NetteInvalidStateException', 'Cannot modify a frozen object NetteDIContainer.');