.dev/tests/unit/tpl/tpl_driver_yf_include_test.Test.php
<?php
require_once __DIR__ . '/tpl__setup.php';
class tpl_driver_yf_include_test extends tpl_abstract
{
public function test_inherit_var()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Inherited var: {key1}', [], $name . '_1');
$this->assertEquals('Inherited var: val1', self::_tpl('{include("' . $name . '_1")}', ['key1' => 'val1']));
}
public function test_inherit_var_inline()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Inherited var: {key1}, passed var: {var2}', [], $name . '_3');
$this->assertEquals('Inherited var: val1, passed var: 42', self::_tpl('{include("' . $name . '_3",var2=42)}', ['key1' => 'val1']));
}
public function test_params_syntax()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Included: {var1} {var2} {var3} {var4}', [], $name . '_4');
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include("' . $name . '_4",var1=v1;var2=v2;var3=v3;var4=v4)}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( "' . $name . '_4",var1=v1;var2=v2;var3=v3;var4=v4)}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( "' . $name . '_4" ,var1=v1;var2=v2;var3=v3;var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( ' . $name . '_4 , var1=v1;var2=v2;var3=v3;var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( ' . $name . '_4, var1=v1;var2=v2;var3=v3;var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( "' . $name . '_4" , var1=v1 ;var2=v2 ;var3=v3 ;var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( "' . $name . '_4" , var1=v1; var2=v2; var3=v3; var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( "' . $name . '_4" , var1=v1 ; var2=v2 ; var3=v3 ; var4=v4 )}'));
$this->assertEquals('Included: v1 v2 v3 v4', self::_tpl('{include( ' . $name . '_4 , var1 = v1 ; var2 = v2 ; var3 = v3 ; var4 = v4 )}'));
}
public function test_simple_syntax()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Hello from include', [], $name . '_simple');
$this->assertEquals('Hello from include', self::_tpl('{include( "' . $name . '_simple")}'));
$this->assertEquals('Hello from include', self::_tpl('{include("' . $name . '_simple" )}'));
$this->assertEquals('Hello from include', self::_tpl('{include( "' . $name . '_simple" )}'));
$this->assertEquals('Hello from include', self::_tpl('{include( ' . $name . '_simple)}'));
$this->assertEquals('Hello from include', self::_tpl('{include(' . $name . '_simple )}'));
$this->assertEquals('Hello from include', self::_tpl('{include( ' . $name . '_simple )}'));
$this->assertEquals('{include()}', self::_tpl('{include()}'));
}
public function test_include_and_catch()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('{cond1}|{cond2}', [], $name . '_catch');
$this->assertEquals('__ok__|', self::_tpl('{catch(cond1)}{if(k1 eq 5)}__ok__{/if}{/catch}{catch(cond2)}{if(k2 eq 4)}__ok2__{/if}{/catch}{include("' . $name . '_catch")}', ['k1' => '5']));
$this->assertEquals('__ok__|', self::_tpl('{catch(cond1)}{if("k1" eq "5")}__ok__{/if}{/catch}{catch(cond2)}{if("k2" eq "4")}__ok2__{/if}{/catch}{cond1}|{cond2}', ['k1' => '5']));
$expected = strpos(get_called_class(), '_compiled_') === false ? 'val1|{cond2}' : 'val1|';
$this->assertEquals($expected, self::_tpl('{include("' . $name . '_catch")}', ['cond1' => 'val1']));
$this->assertEquals('val1|val2', self::_tpl('{include("' . $name . '_catch")}', ['cond1' => 'val1', 'cond2' => 'val2']));
}
public function test_multi_include()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Hello1', [], $name . '_1');
self::_tpl('Hello2', [], $name . '_2');
self::_tpl('Hello3', [], $name . '_3');
$this->assertEquals('Hello1 Hello1 Hello1', self::_tpl('{include("' . $name . '_1")} {include("' . $name . '_1")} {include("' . $name . '_1")}'));
$this->assertEquals('Hello1 Hello2 Hello3', self::_tpl('{include("' . $name . '_1")} {include("' . $name . '_2")} {include("' . $name . '_3")}'));
$this->assertEquals('Hello1 Hello2 Hello1 Hello2', self::_tpl('{include("' . $name . '_1")} {include("' . $name . '_2")} {include("' . $name . '_1")} {include("' . $name . '_2")}'));
}
public function test_include_if_exists()
{
$name = 'unittest/' . __CLASS__ . '/' . __FUNCTION__;
self::_tpl('Hello1', [], $name . '_1');
$this->assertEquals('Hello1 ', self::_tpl('{include_if_exists("' . $name . '_1")} {include_if_exists("' . $name . '_2")} {include_if_exists("' . $name . '_3")}'));
}
}