$t->diag('__construct()'); $engine = new ProjectTemplateEngine($loader); $t->is($engine->getLoader(), $loader, '__construct() takes a loader instance as its second first argument'); $t->is(array_keys($engine->getRenderers()), array('php'), '__construct() automatically registers a PHP renderer if none is given'); $t->ok($engine->getHelperSet() instanceof sfTemplateHelperSet, '__construct() automatically creates a helper set if none is given'); $engine = new ProjectTemplateEngine($loader, array('foo' => $renderer)); $t->is(array_keys($engine->getRenderers()), array('foo', 'php'), '__construct() takes an array of renderers as its third argument'); $t->ok($renderer->getEngine() === $engine, '__construct() registers itself on all renderers'); $engine = new ProjectTemplateEngine($loader, array('php' => $renderer)); $t->ok($engine->getRenderers() === array('php' => $renderer), '__construct() can overridde the default PHP renderer'); $engine = new ProjectTemplateEngine($loader, array(), $helperSet = new sfTemplateHelperSet()); $t->ok($engine->getHelperSet() === $helperSet, '__construct() takes a helper set as its third argument'); // ->getHelperSet() ->setHelperSet() $t->diag('->getHelperSet() ->setHelperSet()'); $engine = new ProjectTemplateEngine($loader); $engine->setHelperSet(new sfTemplateHelperSet(array('foo' => $helper = new SimpleHelper('bar')))); $t->is((string) $engine->getHelperSet()->get('foo'), 'bar', '->setHelperSet() sets a helper set'); // __get() $t->diag('__get()'); $t->is($engine->foo, $helper, '->__get() returns the value of a helper'); try { $engine->bar; $t->fail('->__get() throws an InvalidArgumentException if the helper is not defined'); } catch (InvalidArgumentException $e) { $t->pass('->__get() throws an InvalidArgumentException if the helper is not defined'); } // ->get() ->set() ->has() $t->diag('->get() ->set() ->has()'); $engine = new ProjectTemplateEngine($loader); $engine->set('foo', 'bar'); $t->is($engine->get('foo'), 'bar', '->set() sets a slot value');