mirror of
https://github.com/smarty-php/smarty.git
synced 2025-09-25 20:00:54 +02:00
Added unit tests to prevent regressions of issue #1100 that was fixed in v4
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
// first class callables where introduced in PHP 8.1
|
||||||
|
if (PHP_VERSION_ID >= 80100) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* class for register modifier with (first class) callables tests
|
||||||
|
*
|
||||||
|
* @runTestsInSeparateProcess
|
||||||
|
* @preserveGlobalState disabled
|
||||||
|
* @backupStaticAttributes enabled
|
||||||
|
*/
|
||||||
|
class RegisterModifierFirstClassCallablesTest extends PHPUnit_Smarty
|
||||||
|
{
|
||||||
|
public function setUp(): void
|
||||||
|
{
|
||||||
|
$this->setUpSmarty(__DIR__);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testInit()
|
||||||
|
{
|
||||||
|
$this->cleanDirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterFirstClassCallable()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'testmodifier', eval('return strrev(...);'));
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{"andersom"|testmodifier}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterFirstClassCallableSameName()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'mymodifier', eval('return strrev(...);'));
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{"andersom"|mymodifier}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterFirstClassCallableAsFunc()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'kprint_r_out', eval('return strrev(...);'));
|
||||||
|
$this->smarty->assign('myVar', 'andersom');
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{kprint_r_out($myVar)}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterFirstClassCallableSameNameAsPhpFunc()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'mymodifierfcc', eval('return strrev(...);'));
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{mymodifierfcc("andersom")}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function mymodifierfcc($a, $b, $c)
|
||||||
|
{
|
||||||
|
return "$a function $b $c";
|
||||||
|
}
|
@@ -135,6 +135,20 @@ class RegisterModifierTest extends PHPUnit_Smarty
|
|||||||
$this->assertEquals($expectedValue, $this->smarty->fetch('string:' . $template));
|
$this->assertEquals($expectedValue, $this->smarty->fetch('string:' . $template));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testRegisterNativePhpFuncAsString()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'strrev', 'strrev');
|
||||||
|
$this->smarty->assign('myVar', 'andersom');
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{strrev($myVar)}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterNativePhpFuncUnderDifferentName()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'k_xyz_a', 'strrev');
|
||||||
|
$this->smarty->assign('myVar', 'andersom');
|
||||||
|
$this->assertEquals('mosredna', $this->smarty->fetch('string:{k_xyz_a($myVar)}'));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class WildcardExtension extends \Smarty\Extension\Base {
|
class WildcardExtension extends \Smarty\Extension\Base {
|
||||||
|
Reference in New Issue
Block a user