2013-01-25 18:36:16 +04:00
< ? php
use Aspect\Render ,
Aspect\Misc ;
class AspectTest extends \PHPUnit_Framework_TestCase {
/**
* @ var Aspect
*/
public $aspect ;
public static function tearDownAfterClass () {
Misc :: clean ( ASPECT_RESOURCES . '/compile' );
Misc :: rm ( ASPECT_RESOURCES . '/template/custom.tpl' );
}
public function setUp () {
2013-02-08 14:23:10 +04:00
if ( ! file_exists ( ASPECT_RESOURCES . '/compile' )) {
mkdir ( ASPECT_RESOURCES . '/compile' , 0777 , true );
}
2013-01-25 18:36:16 +04:00
self :: tearDownAfterClass ();
2013-02-07 19:22:13 +04:00
$this -> aspect = $aspect = Aspect :: factory ( ASPECT_RESOURCES . '/template' , ASPECT_RESOURCES . '/compile' );
2013-01-25 18:36:16 +04:00
$aspect -> setCompileDir ( ASPECT_RESOURCES . '/compile' );
$aspect -> setForceCompile ( false );
$aspect -> setCompileCheck ( false );
}
public function tpl ( $code ) {
Misc :: put ( ASPECT_RESOURCES . '/template/custom.tpl' , $code );
}
public function rmTpl () {
Misc :: rm ( ASPECT_RESOURCES . '/template/custom.tpl' );
}
public function testAddRender () {
$test = $this ;
2013-02-13 20:51:27 +04:00
$this -> aspect -> addTemplate ( new Render ( $this -> aspect , function ( $tpl ) use ( $test ) {
2013-01-25 18:36:16 +04:00
/** @var \PHPUnit_Framework_TestCase $test */
$test -> assertInstanceOf ( 'Aspect\Render' , $tpl );
echo " Inline render " ;
2013-02-13 20:51:27 +04:00
}, array (
" name " => 'render.tpl'
)));
2013-01-25 18:36:16 +04:00
$this -> assertSame ( " Inline render " , $this -> aspect -> fetch ( 'render.tpl' , array ()));
}
public function testCompileFile () {
$a = array (
" a " => " a " ,
" b " => " b "
);
$this -> assertSame ( " Template 1 a " , $this -> aspect -> fetch ( 'template1.tpl' , $a ));
$this -> assertSame ( " Template 2 b " , $this -> aspect -> fetch ( 'template2.tpl' , $a ));
$this -> assertInstanceOf ( 'Aspect\Render' , $this -> aspect -> getTemplate ( 'template1.tpl' ));
$this -> assertInstanceOf ( 'Aspect\Render' , $this -> aspect -> getTemplate ( 'template2.tpl' ));
$this -> assertSame ( 2 , iterator_count ( new FilesystemIterator ( ASPECT_RESOURCES . '/compile' )));
}
public function testStorage () {
$this -> tpl ( 'Custom template' );
$this -> assertSame ( " Custom template " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
$this -> rmTpl ();
$this -> assertSame ( " Custom template " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
$this -> tpl ( 'Custom template 2' );
$this -> assertSame ( " Custom template " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
}
public function testCheckMTime () {
$this -> aspect -> setCompileCheck ( true );
$this -> tpl ( 'Custom template' );
$this -> assertSame ( " Custom template " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
sleep ( 1 );
$this -> tpl ( 'Custom template (new)' );
$this -> assertSame ( " Custom template (new) " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
}
public function testForceCompile () {
$this -> aspect -> setForceCompile ( true );
$this -> tpl ( 'Custom template' );
$this -> assertSame ( " Custom template " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
$this -> tpl ( 'Custom template (new)' );
$this -> assertSame ( " Custom template (new) " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
}
public function testSetModifier () {
2013-02-07 17:37:16 +04:00
$this -> aspect -> addModifier ( " mymod " , " myMod " );
2013-01-25 18:36:16 +04:00
$this -> tpl ( 'Custom modifier {$a|mymod}' );
$this -> assertSame ( " Custom modifier (myMod)Custom(/myMod) " , $this -> aspect -> fetch ( 'custom.tpl' , array ( " a " => " Custom " )));
}
public function testSetFunctions () {
$this -> aspect -> setForceCompile ( true );
2013-02-07 17:37:16 +04:00
$this -> aspect -> addFunction ( " myfunc " , " myFunc " );
$this -> aspect -> addBlockFunction ( " myblockfunc " , " myBlockFunc " );
2013-01-25 18:36:16 +04:00
$this -> tpl ( 'Custom function {myfunc name="foo"}' );
$this -> assertSame ( " Custom function MyFunc:foo " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
$this -> tpl ( 'Custom function {myblockfunc name="foo"} this block1 {/myblockfunc}' );
$this -> assertSame ( " Custom function Block:foo:this block1:Block " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
}
public function testSetCompilers () {
$this -> aspect -> setForceCompile ( true );
2013-02-07 17:37:16 +04:00
$this -> aspect -> addCompiler ( " mycompiler " , 'myCompiler' );
$this -> aspect -> addBlockCompiler ( " myblockcompiler " , 'myBlockCompilerOpen' , 'myBlockCompilerClose' , array (
2013-01-25 18:36:16 +04:00
'tag' => 'myBlockCompilerTag'
));
$this -> tpl ( 'Custom compiler {mycompiler name="bar"}' );
$this -> assertSame ( " Custom compiler PHP_VERSION: " . PHP_VERSION . " (for bar) " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
$this -> tpl ( 'Custom compiler {myblockcompiler name="bar"} block1 {tag name="baz"} block2 {/myblockcompiler}' );
$this -> assertSame ( " Custom compiler PHP_VERSION: " . PHP_VERSION . " (for bar) block1 Tag baz of compiler block2 End of compiler " , $this -> aspect -> fetch ( 'custom.tpl' , array ()));
}
}
?>