From c1642490f0793a49a719586bf1e077fc1cd43185 Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Fri, 5 Apr 2024 17:04:03 +0200 Subject: [PATCH] Added some unit test to study consistent behavior on passing argument by reference. --- ...ArgumentMustBePassedByReference961Test.php | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/UnitTests/TemplateSource/_Issues/ArgumentMustBePassedByReference961Test.php diff --git a/tests/UnitTests/TemplateSource/_Issues/ArgumentMustBePassedByReference961Test.php b/tests/UnitTests/TemplateSource/_Issues/ArgumentMustBePassedByReference961Test.php new file mode 100644 index 000000000..ea80b4f84 --- /dev/null +++ b/tests/UnitTests/TemplateSource/_Issues/ArgumentMustBePassedByReference961Test.php @@ -0,0 +1,65 @@ +registerPlugin('modifier', 'reset', 'reset'); + $templateStr = "string:{reset(\$ar)}"; + $smarty->assign('ar', [1,2,3]); + $this->assertEquals( + '1', + $smarty->fetch($templateStr) + ); + } + + /** + * @group issue961 + */ + public function testResetAsModifier() + { + $smarty = new Smarty(); + $templateStr = "string:{\$ar|reset}"; + $smarty->assign('ar', [1,2,3]); + $this->assertEquals( + '1', + $smarty->fetch($templateStr) + ); + } + + /** + * @group issue961 + */ + public function testResetInExpression() + { + $smarty = new Smarty(); + $smarty->registerPlugin('modifier', 'reset', 'reset'); + $templateStr = "string:{if reset(\$ar)}ok{/if}"; + $smarty->assign('ar', [1,2,3]); + $this->assertEquals( + 'ok', + $smarty->fetch($templateStr) + ); + } + + /** + * @group issue961 + * @deprecated + */ + public function testMatch() + { + $smarty = new Smarty(); + $smarty->setErrorReporting(E_ALL & ~ E_USER_DEPRECATED); + $smarty->registerPlugin('modifier', 'preg_match', 'preg_match'); + $templateStr = 'string:{assign var="match" value=null}{if preg_match(\'/([a-z]{4})/\', "a test", $match)}{$match.1}{/if}'; + $this->assertEquals( + 'test', + $smarty->fetch($templateStr) + ); + } +} \ No newline at end of file