2010-03-18 14:26:21 +00:00
< ? php
/*
2010-04-25 16:06:54 +01:00
* This file is part of the Symfony package .
2010-03-18 14:26:21 +00:00
*
2011-03-06 11:40:06 +00:00
* ( c ) Fabien Potencier < fabien @ symfony . com >
2010-04-07 02:07:59 +01:00
*
2010-03-18 14:26:21 +00:00
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
2010-08-20 22:09:55 +01:00
namespace Symfony\Tests\Component\Templating\Helper ;
2010-03-18 14:26:21 +00:00
2010-08-20 22:09:55 +01:00
use Symfony\Component\Templating\Helper\SlotsHelper ;
2010-03-18 14:26:21 +00:00
class SlotsHelperTest extends \PHPUnit_Framework_TestCase
{
2010-05-06 12:25:53 +01:00
public function testHasGetSet ()
{
$helper = new SlotsHelper ();
$helper -> set ( 'foo' , 'bar' );
$this -> assertEquals ( 'bar' , $helper -> get ( 'foo' ), '->set() sets a slot value' );
$this -> assertEquals ( 'bar' , $helper -> get ( 'bar' , 'bar' ), '->get() takes a default value to return if the slot does not exist' );
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
$this -> assertTrue ( $helper -> has ( 'foo' ), '->has() returns true if the slot exists' );
$this -> assertFalse ( $helper -> has ( 'bar' ), '->has() returns false if the slot does not exist' );
}
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
public function testOutput ()
{
$helper = new SlotsHelper ();
$helper -> set ( 'foo' , 'bar' );
ob_start ();
$ret = $helper -> output ( 'foo' );
$output = ob_get_clean ();
$this -> assertEquals ( 'bar' , $output , '->output() outputs the content of a slot' );
$this -> assertTrue ( $ret , '->output() returns true if the slot exists' );
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
ob_start ();
$ret = $helper -> output ( 'bar' , 'bar' );
$output = ob_get_clean ();
$this -> assertEquals ( 'bar' , $output , '->output() takes a default value to return if the slot does not exist' );
$this -> assertTrue ( $ret , '->output() returns true if the slot does not exist but a default value is provided' );
2010-03-18 14:26:21 +00:00
2010-05-06 12:25:53 +01:00
ob_start ();
$ret = $helper -> output ( 'bar' );
$output = ob_get_clean ();
$this -> assertEquals ( '' , $output , '->output() outputs nothing if the slot does not exist' );
$this -> assertFalse ( $ret , '->output() returns false if the slot does not exist' );
2010-03-18 14:26:21 +00:00
}
2010-05-06 12:25:53 +01:00
public function testStartStop ()
2010-03-18 14:26:21 +00:00
{
2010-05-06 12:25:53 +01:00
$helper = new SlotsHelper ();
$helper -> start ( 'bar' );
echo 'foo' ;
$helper -> stop ();
$this -> assertEquals ( 'foo' , $helper -> get ( 'bar' ), '->start() starts a slot' );
$this -> assertTrue ( $helper -> has ( 'bar' ), '->starts() starts a slot' );
$helper -> start ( 'bar' );
2010-05-07 15:09:11 +01:00
try {
2010-05-06 12:25:53 +01:00
$helper -> start ( 'bar' );
$helper -> stop ();
$this -> fail ( '->start() throws an InvalidArgumentException if a slot with the same name is already started' );
2010-05-07 15:09:11 +01:00
} catch ( \Exception $e ) {
2010-05-06 12:25:53 +01:00
$helper -> stop ();
$this -> assertInstanceOf ( '\InvalidArgumentException' , $e , '->start() throws an InvalidArgumentException if a slot with the same name is already started' );
$this -> assertEquals ( 'A slot named "bar" is already started.' , $e -> getMessage (), '->start() throws an InvalidArgumentException if a slot with the same name is already started' );
}
2010-05-07 15:09:11 +01:00
try {
2010-05-06 12:25:53 +01:00
$helper -> stop ();
$this -> fail ( '->stop() throws an LogicException if no slot is started' );
2010-05-07 15:09:11 +01:00
} catch ( \Exception $e ) {
2010-05-06 12:25:53 +01:00
$this -> assertInstanceOf ( '\LogicException' , $e , '->stop() throws an LogicException if no slot is started' );
$this -> assertEquals ( 'No slot started.' , $e -> getMessage (), '->stop() throws an LogicException if no slot is started' );
}
2010-03-18 14:26:21 +00:00
}
}