mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch 'ticket/15068' of https://github.com/javiexin/phpbb into ticket/15068
This commit is contained in:
@@ -11,7 +11,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
require_once dirname(__FILE__) . '/template_test_case.php';
|
||||
|
||||
class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
@@ -129,6 +128,34 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"loop\nloop\nloop\nloop\nloop#0-block#0\nloop#0-block#1\nloop#1-block#0\nloop#1-block#1",
|
||||
),
|
||||
array(
|
||||
'loop_twig.html',
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"noloop\nnoloop",
|
||||
),
|
||||
array(
|
||||
'loop_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array())),
|
||||
array(),
|
||||
"loop\nloop",
|
||||
),
|
||||
array(
|
||||
'loop_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array(), array()), 'test_loop.block' => array(array())),
|
||||
array(),
|
||||
"loop\nloop\nloop\nloop",
|
||||
),
|
||||
array(
|
||||
'loop_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array(), array()), 'test_loop.block' => array(array()), 'block' => array(array(), array())),
|
||||
array(),
|
||||
"loop\nloop\nloop\nloop\nloop#0-block#0\nloop#0-block#1\nloop#1-block#0\nloop#1-block#1",
|
||||
),
|
||||
array(
|
||||
'loop_vars.html',
|
||||
array(),
|
||||
@@ -150,6 +177,27 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast\n0 - c\n1 - c\nlast inner",
|
||||
),
|
||||
array(
|
||||
'loop_vars_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array('VARIABLE' => 'x'))),
|
||||
array(),
|
||||
"first\n0 - a\nx - b\nset\nlast",
|
||||
),
|
||||
array(
|
||||
'loop_vars_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y'))),
|
||||
array(),
|
||||
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast",
|
||||
),
|
||||
array(
|
||||
'loop_vars_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'test_loop.inner' => array(array(), array())),
|
||||
array(),
|
||||
"first\n0 - a\nx - b\nset\n1 - a\ny - b\nset\nlast\n0 - c\n1 - c\nlast inner",
|
||||
),
|
||||
array(
|
||||
'loop_advanced.html',
|
||||
array(),
|
||||
@@ -157,6 +205,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"101234561\nx\n101234561\nx\n101234561\nx\n1234561\nx\n1\nx\n101\nx\n234\nx\n10\nx\n561\nx\n561",
|
||||
),
|
||||
array(
|
||||
'loop_advanced_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array(), array(), array(), array(), array(), array(), array())),
|
||||
array(),
|
||||
"101234561\nx\n101234561\nx\n101234561\nx\n1234561\nx\n1\nx\n101\nx\n234\nx\n10\nx\n561\nx\n561",
|
||||
),
|
||||
array(
|
||||
'loop_nested2.html',
|
||||
array(),
|
||||
@@ -164,6 +219,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"o0o1m01m11",
|
||||
),
|
||||
array(
|
||||
'loop_nested2_twig.html',
|
||||
array(),
|
||||
array('outer' => array(array(), array()), 'outer.middle' => array(array(), array())),
|
||||
array(),
|
||||
"o0o1m01m11",
|
||||
),
|
||||
array(
|
||||
'define.html',
|
||||
array(),
|
||||
@@ -243,6 +305,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array('test_loop'),
|
||||
'',
|
||||
),
|
||||
array(
|
||||
'loop_vars_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'test_loop.inner' => array(array(), array())),
|
||||
array('test_loop'),
|
||||
'',
|
||||
),
|
||||
array(
|
||||
'include_define_variable.html',
|
||||
array('VARIABLE' => 'variable.html'),
|
||||
@@ -274,6 +343,15 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"noloop\nnoloop",
|
||||
),
|
||||
array(
|
||||
// Just like a regular loop but the name begins
|
||||
// with an underscore
|
||||
'loop_underscore_twig.html',
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"noloop\nnoloop",
|
||||
),
|
||||
array(
|
||||
'lang.html',
|
||||
array(),
|
||||
@@ -286,7 +364,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"Value'\n1 O'Clock\nValue\'\n1 O\'Clock",
|
||||
"Value'\n1 O'Clock\nValue\\x27\n1\\x20O\\x27Clock",
|
||||
array('VARIABLE' => "Value'", '1_VARIABLE' => "1 O'Clock"),
|
||||
),
|
||||
array(
|
||||
@@ -296,6 +374,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"top-level content",
|
||||
),
|
||||
array(
|
||||
'loop_nested_multilevel_ref_twig.html',
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
"top-level content",
|
||||
),
|
||||
array(
|
||||
'loop_nested_multilevel_ref.html',
|
||||
array(),
|
||||
@@ -303,6 +388,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"top-level content\nouter x\nouter y\ninner z\nfirst row\n\ninner zz",
|
||||
),
|
||||
array(
|
||||
'loop_nested_multilevel_ref_twig.html',
|
||||
array(),
|
||||
array('outer' => array(array('VARIABLE' => 'x'), array('VARIABLE' => 'y')), 'outer.inner' => array(array('VARIABLE' => 'z'), array('VARIABLE' => 'zz'))),
|
||||
array(),
|
||||
"top-level content\nouter x\nouter y\ninner z\nfirst row\n\ninner zz",
|
||||
),
|
||||
array(
|
||||
'loop_nested_deep_multilevel_ref.html',
|
||||
array(),
|
||||
@@ -310,6 +402,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"top-level content\nouter\nmiddle\ninner z\nfirst row of 2 in inner\n\ninner zz",
|
||||
),
|
||||
array(
|
||||
'loop_nested_deep_multilevel_ref_twig.html',
|
||||
array(),
|
||||
array('outer' => array(array()), 'outer.middle' => array(array()), 'outer.middle.inner' => array(array('VARIABLE' => 'z'), array('VARIABLE' => 'zz'))),
|
||||
array(),
|
||||
"top-level content\nouter\nmiddle\ninner z\nfirst row of 2 in inner\n\ninner zz",
|
||||
),
|
||||
array(
|
||||
'loop_size.html',
|
||||
array(),
|
||||
@@ -317,6 +416,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"nonexistent = 0\n! nonexistent\n\nempty = 0\n! empty\nloop\n\nin loop",
|
||||
),
|
||||
array(
|
||||
'loop_size_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array()), 'empty_loop' => array()),
|
||||
array(),
|
||||
"nonexistent = 0\n! nonexistent\n\nempty = 0\n! empty\nloop\n\nin loop",
|
||||
),
|
||||
array(
|
||||
'loop_include.html',
|
||||
array(),
|
||||
@@ -324,6 +430,13 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
"barbarbar1bar1",
|
||||
),
|
||||
array(
|
||||
'loop_include_twig.html',
|
||||
array(),
|
||||
array('test_loop' => array(array('foo' => 'bar'), array('foo' => 'bar1'))),
|
||||
array(),
|
||||
"barbarbar1bar1",
|
||||
),
|
||||
array(
|
||||
'loop_nested_include.html',
|
||||
array(),
|
||||
@@ -335,6 +448,17 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
"[bar|[bar|]][bar1|[bar1|[bar1|works]]]",
|
||||
array(),
|
||||
),
|
||||
array(
|
||||
'loop_nested_include_twig.html',
|
||||
array(),
|
||||
array(
|
||||
'test_loop' => array(array('foo' => 'bar'), array('foo' => 'bar1')),
|
||||
'test_loop.inner' => array(array('myinner' => 'works')),
|
||||
),
|
||||
array(),
|
||||
"[bar|[bar|]][bar1|[bar1|[bar1|works]]]",
|
||||
array(),
|
||||
),
|
||||
/* Does not pass with the current implementation.
|
||||
array(
|
||||
'loop_reuse.html',
|
||||
@@ -343,8 +467,15 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
// Not entirely sure what should be outputted but the current output of "a" is most certainly wrong
|
||||
"a\nb\nc\nd",
|
||||
),*/
|
||||
array(
|
||||
'loop_reuse_twig.html',
|
||||
array(),
|
||||
array('one' => array(array('VAR' => 'a'), array('VAR' => 'b')), 'one.one' => array(array('VAR' => 'c'), array('VAR' => 'd'))),
|
||||
array(),
|
||||
// Not entirely sure what should be outputted but the current output of "a" is most certainly wrong
|
||||
"a\nb\nc\nd",
|
||||
),
|
||||
*/
|
||||
array(
|
||||
'twig.html',
|
||||
array('VARIABLE' => 'FOObar',),
|
||||
@@ -359,6 +490,27 @@ class phpbb_template_template_test extends phpbb_template_template_test_case
|
||||
array(),
|
||||
'inner_value',
|
||||
),
|
||||
array(
|
||||
'loop_expressions.html',
|
||||
array(),
|
||||
array('loop' => array(array(),array(),array(),array(),array(),array()),),
|
||||
array(),
|
||||
'yesnononoyesnoyesnonoyesnono',
|
||||
),
|
||||
array(
|
||||
'loop_expressions_twig.html',
|
||||
array(),
|
||||
array('loop' => array(array(),array(),array(),array(),array(),array()),),
|
||||
array(),
|
||||
'yesnononoyesnoyesnonoyesnono',
|
||||
),
|
||||
array(
|
||||
'loop_expressions_twig2.html',
|
||||
array('loop' => array(array(),array(),array(),array(),array(),array()),),
|
||||
array(),
|
||||
array(),
|
||||
'yesnononoyesnoyesnonoyesnono',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -559,11 +711,11 @@ EOT
|
||||
),
|
||||
array(
|
||||
'outer',
|
||||
array('VARIABLE' => 'pos #1'),
|
||||
array('VARIABLE' => 'changed'),
|
||||
0,
|
||||
'change',
|
||||
<<<EOT
|
||||
outer - 0 - pos #1
|
||||
outer - 0 - changed
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
@@ -574,7 +726,124 @@ middle - 0
|
||||
middle - 1
|
||||
EOT
|
||||
,
|
||||
'Test inserting at 1 on top level block',
|
||||
'Test changing at 0 on top level block',
|
||||
),
|
||||
array(
|
||||
'outer',
|
||||
array('VARIABLE' => 'changed'),
|
||||
array('S_ROW_NUM' => 2),
|
||||
'change',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 2 - changed
|
||||
middle - 0
|
||||
middle - 1
|
||||
EOT
|
||||
,
|
||||
'Test changing at KEY on top level block',
|
||||
),
|
||||
array(
|
||||
'outer.middle',
|
||||
array('VARIABLE' => 'before'),
|
||||
false,
|
||||
'insert',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 2
|
||||
middle - 0 - before
|
||||
middle - 1
|
||||
middle - 2
|
||||
EOT
|
||||
,
|
||||
'Test inserting before on middle level block',
|
||||
),
|
||||
array(
|
||||
'outer.middle',
|
||||
array('VARIABLE' => 'after'),
|
||||
true,
|
||||
'insert',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 2
|
||||
middle - 0
|
||||
middle - 1
|
||||
middle - 2 - after
|
||||
EOT
|
||||
,
|
||||
'Test inserting after on middle level block',
|
||||
),
|
||||
array(
|
||||
'outer[1].middle',
|
||||
array('VARIABLE' => 'pos #1'),
|
||||
1,
|
||||
'insert',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1 - pos #1
|
||||
middle - 2
|
||||
outer - 2
|
||||
middle - 0
|
||||
middle - 1
|
||||
EOT
|
||||
,
|
||||
'Test inserting at 1 on middle level block',
|
||||
),
|
||||
array(
|
||||
'outer[].middle',
|
||||
array('VARIABLE' => 'changed'),
|
||||
0,
|
||||
'change',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 2
|
||||
middle - 0 - changed
|
||||
middle - 1
|
||||
EOT
|
||||
,
|
||||
'Test changing at beginning of last top level block',
|
||||
),
|
||||
array(
|
||||
'outer.middle',
|
||||
array('VARIABLE' => 'changed'),
|
||||
array('S_ROW_NUM' => 1),
|
||||
'change',
|
||||
<<<EOT
|
||||
outer - 0
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 1
|
||||
middle - 0
|
||||
middle - 1
|
||||
outer - 2
|
||||
middle - 0
|
||||
middle - 1 - changed
|
||||
EOT
|
||||
,
|
||||
'Test changing at beginning of last top level block',
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -632,8 +901,55 @@ EOT
|
||||
|
||||
$expect = 'outer - 0[outer|4]outer - 1[outer|4]middle - 0[middle|1]outer - 2 - test[outer|4]middle - 0[middle|2]middle - 1[middle|2]outer - 3[outer|4]middle - 0[middle|3]middle - 1[middle|3]middle - 2[middle|3]';
|
||||
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring S_NUM_ROWS is correct after modification');
|
||||
|
||||
$this->template->alter_block_array('outer.middle', array());
|
||||
|
||||
$expect = 'outer - 0[outer|4]outer - 1[outer|4]middle - 0[middle|1]outer - 2 - test[outer|4]middle - 0[middle|2]middle - 1[middle|2]outer - 3[outer|4]middle - 0[middle|4]middle - 1[middle|4]middle - 2[middle|4]middle - 3[middle|4]';
|
||||
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring S_NUM_ROWS is correct after insertion at middle level');
|
||||
|
||||
$this->template->alter_block_array('outer.middle', array('VARIABLE' => 'test'), 2, 'change');
|
||||
|
||||
$expect = 'outer - 0[outer|4]outer - 1[outer|4]middle - 0[middle|1]outer - 2 - test[outer|4]middle - 0[middle|2]middle - 1[middle|2]outer - 3[outer|4]middle - 0[middle|4]middle - 1[middle|4]middle - 2 - test[middle|4]middle - 3[middle|4]';
|
||||
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring S_NUM_ROWS is correct after modification at middle level');
|
||||
}
|
||||
|
||||
public function test_find_key_index()
|
||||
{
|
||||
$this->template->set_filenames(array('test' => 'loop_nested.html'));
|
||||
|
||||
$this->template->assign_var('TEST_MORE', true);
|
||||
|
||||
// @todo Change this
|
||||
$this->template->assign_block_vars('outer', array('VARIABLE' => 'zero'));
|
||||
$this->template->assign_block_vars('outer', array('VARIABLE' => 'one'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '1A'));
|
||||
$this->template->assign_block_vars('outer', array('VARIABLE' => 'two'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '2A'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '2B'));
|
||||
$this->template->assign_block_vars('outer', array('VARIABLE' => 'three'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '3A'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '3B'));
|
||||
$this->template->assign_block_vars('outer.middle', array('VARIABLE' => '3C'));
|
||||
|
||||
$expect = 'outer - 0 - zero[outer|4]outer - 1 - one[outer|4]middle - 0 - 1A[middle|1]outer - 2 - two[outer|4]middle - 0 - 2A[middle|2]middle - 1 - 2B[middle|2]outer - 3 - three[outer|4]middle - 0 - 3A[middle|3]middle - 1 - 3B[middle|3]middle - 2 - 3C[middle|3]';
|
||||
$this->assertEquals($expect, str_replace(array("\n", "\r", "\t"), '', $this->display('test')), 'Ensuring template is built correctly before modification');
|
||||
|
||||
$this->template->find_key_index('outer', false);
|
||||
|
||||
$this->assertEquals(0, $this->template->find_key_index('outer', false), 'Find index at the beginning of outer loop');
|
||||
$this->assertEquals(1, $this->template->find_key_index('outer', 1), 'Find index by index in outer loop');
|
||||
$this->assertEquals(2, $this->template->find_key_index('outer', array('VARIABLE' => 'two')), 'Find index by key in outer loop');
|
||||
$this->assertEquals(3, $this->template->find_key_index('outer', true), 'Find index at the end of outer loop');
|
||||
$this->assertEquals(false, $this->template->find_key_index('outer', 7), 'Find index out of bounds of outer loop');
|
||||
|
||||
$this->assertEquals(false, $this->template->find_key_index('outer[0].middle', false), 'Find index at the beginning of middle loop, no middle block');
|
||||
$this->assertEquals(false, $this->template->find_key_index('outer[1].middle', 1), 'Find index by index in inner loop, out of bounds');
|
||||
$this->assertEquals(1, $this->template->find_key_index('outer[2].middle', array('VARIABLE' => '2B')), 'Find index by key in middle loop');
|
||||
$this->assertEquals(2, $this->template->find_key_index('outer.middle', true), 'Find index at the end of middle loop');
|
||||
|
||||
$this->assertEquals(false, $this->template->find_key_index('outer.wrong', true), 'Wrong middle block name');
|
||||
$this->assertEquals(false, $this->template->find_key_index('wrong.middle', false), 'Wrong outer block name');
|
||||
}
|
||||
public function assign_block_vars_array_data()
|
||||
{
|
||||
return array(
|
||||
|
Reference in New Issue
Block a user