summaryrefslogtreecommitdiff
path: root/vendor/zordius/lightncandy/tests/regressionTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zordius/lightncandy/tests/regressionTest.php')
-rw-r--r--vendor/zordius/lightncandy/tests/regressionTest.php609
1 files changed, 609 insertions, 0 deletions
diff --git a/vendor/zordius/lightncandy/tests/regressionTest.php b/vendor/zordius/lightncandy/tests/regressionTest.php
index bf591536..d7b6b96d 100644
--- a/vendor/zordius/lightncandy/tests/regressionTest.php
+++ b/vendor/zordius/lightncandy/tests/regressionTest.php
@@ -282,6 +282,612 @@ class regressionTest extends PHPUnit_Framework_TestCase
),
Array(
+ 'id' => 114,
+ 'template' => '{{^myeach .}}OK:{{.}},{{else}}NOT GOOD{{/myeach}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_BESTPERFORMANCE,
+ 'blockhelpers' => Array(
+ 'myeach' => function ($input) {
+ return $input;
+ }
+ ),
+ ),
+ 'data' => Array(1, 'foo', 3, 'bar'),
+ 'expected' => 'NOT GOOD',
+ ),
+
+ Array(
+ 'id' => 114,
+ 'template' => '{{^myeach .}}OK:{{.}},{{else}}NOT GOOD{{/myeach}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_BESTPERFORMANCE,
+ 'blockhelpers' => Array(
+ 'myeach' => function ($input) {
+ return;
+ }
+ ),
+ ),
+ 'data' => Array(1, 'foo', 3, 'bar'),
+ 'expected' => 'OK:,',
+ ),
+
+ Array(
+ 'id' => 124,
+ 'template' => '{{list foo bar abc=(lt 10 3) def=(lt 3 10)}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'lt' => function ($a, $b) {
+ return ($a > $b) ? Array("$a>$b", 'raw') : '';
+ },
+ 'list' => function () {
+ $out = 'List:';
+ $args = func_get_args();
+ $opts = array_pop($args);
+
+ foreach ($args as $v) {
+ if ($v) {
+ $out .= ")$v , ";
+ }
+ }
+
+ foreach ($opts['hash'] as $k => $v) {
+ if ($v) {
+ $out .= "]$k=$v , ";
+ }
+ }
+ return array($out, 'raw');
+ }
+ ),
+ ),
+ 'data' => Array('foo' => 'OK!', 'bar' => 'OK2', 'abc' => false, 'def' => 123),
+ 'expected' => 'List:)OK! , )OK2 , ]abc=10>3 , ',
+ ),
+
+ Array(
+ 'id' => 124,
+ 'template' => '{{#if (equal \'OK\' cde)}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => 'OK'),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 124,
+ 'template' => '{{#if (equal true (equal \'OK\' cde))}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => 'OK'),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{#if (equal true ( equal \'OK\' cde))}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => 'OK'),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{#if (equal true (equal \' OK\' cde))}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => ' OK'),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{#if (equal true (equal \' ==\' cde))}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => ' =='),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{#if (equal true (equal " ==" cde))}}YES!{{/if}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array('cde' => ' =='),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{[ abc]}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'equal' => function ($a, $b) {
+ return $a === $b;
+ }
+ ),
+ ),
+ 'data' => Array(' abc' => 'YES!'),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'id' => 125,
+ 'template' => '{{list [ abc] " xyz" \' def\' "==" \'==\' "OK"}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'list' => function ($a, $b) {
+ $out = 'List:';
+ $args = func_get_args();
+ $opts = array_pop($args);
+ foreach ($args as $v) {
+ if ($v) {
+ $out .= ")$v , ";
+ }
+ }
+ return $out;
+ }
+ ),
+ ),
+ 'data' => Array(' abc' => 'YES!'),
+ 'expected' => 'List:)YES! , ) xyz , ) def , )== , )== , )OK , '
+ ),
+
+ Array(
+ 'id' => 127,
+ 'template' => '{{#each array}}#{{#if true}}{{name}}-{{../name}}-{{../../name}}-{{../../../name}}{{/if}}##{{#myif true}}{{name}}={{../name}}={{../../name}}={{../../../name}}{{/myif}}###{{#mywith true}}{{name}}~{{../name}}~{{../../name}}~{{../../../name}}{{/mywith}}{{/each}}',
+ 'data' => Array('name' => 'john', 'array' => Array(1,2,3)),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array('myif', 'mywith'),
+ ),
+ 'expected' => '#--john-##==john=###~~john~#--john-##==john=###~~john~#--john-##==john=###~~john~',
+ ),
+
+ Array(
+ 'id' => 128,
+ 'template' => 'foo: {{foo}} , parent foo: {{../foo}}',
+ 'data' => Array('foo' => 'OK'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ ),
+ 'expected' => 'foo: OK , parent foo: ',
+ ),
+
+ Array(
+ 'id' => 132,
+ 'template' => '{{list (keys .)}}',
+ 'data' => Array('foo' => 'bar', 'test' => 'ok'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'keys' => function($arg) {
+ return Array(array_keys($arg[0]), 'asis');
+ },
+ 'list' => function($arg) {
+ return join(',', $arg[0]);
+ }
+ ),
+ ),
+ 'expected' => 'foo,test',
+ ),
+
+ Array(
+ 'id' => 133,
+ 'template' => "{{list (keys\n .\n ) \n}}",
+ 'data' => Array('foo' => 'bar', 'test' => 'ok'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'keys' => function($arg) {
+ return Array(array_keys($arg[0]), 'asis');
+ },
+ 'list' => function($arg) {
+ return join(',', $arg[0]);
+ }
+ ),
+ ),
+ 'expected' => 'foo,test',
+ ),
+
+ Array(
+ 'id' => 133,
+ 'template' => "{{list\n .\n \n \n}}",
+ 'data' => Array('foo', 'bar', 'test'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'list' => function($arg) {
+ return join(',', $arg[0]);
+ }
+ ),
+ ),
+ 'expected' => 'foo,bar,test',
+ ),
+
+ Array(
+ 'id' => 134,
+ 'template' => "{{#if 1}}{{list (keys ../names)}}{{/if}}",
+ 'data' => Array('names' => Array('foo' => 'bar', 'test' => 'ok')),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'keys' => function($arg) {
+ return Array(array_keys($arg[0]), 'asis');
+ },
+ 'list' => function($arg) {
+ return join(',', $arg[0]);
+ }
+ ),
+ ),
+ 'expected' => 'foo,test',
+ ),
+
+ Array(
+ 'id' => 138,
+ 'template' => "{{#each (keys .)}}={{.}}{{/each}}",
+ 'data' => Array('foo' => 'bar', 'test' => 'ok', 'Haha'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'keys' => function($arg) {
+ return Array(array_keys($arg[0]), 'asis');
+ }
+ ),
+ ),
+ 'expected' => '=foo=test=0',
+ ),
+
+ Array(
+ 'id' => 140,
+ 'template' => "{{[a.good.helper] .}}",
+ 'data' => Array('ha', 'hey', 'ho'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'a.good.helper' => function($arg) {
+ return join(',', $arg[0]);
+ }
+ ),
+ ),
+ 'expected' => 'ha,hey,ho',
+ ),
+
+ Array(
+ 'id' => 141,
+ 'template' => "{{#with foo}}{{#getThis bar}}{{/getThis}}{{/with}}",
+ 'data' => Array('foo' => Array('bar' => 'Good!')),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'getThis' => function($input, $options) {
+ return $input . '-' . $options['_this']['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'Good!-Good!',
+ ),
+
+ Array(
+ 'id' => 141,
+ 'template' => "{{#with foo}}{{getThis bar}}{{/with}}",
+ 'data' => Array('foo' => Array('bar' => 'Good!')),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'getThis' => function($input, $options) {
+ return $input . '-' . $options['_this']['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'Good!-Good!',
+ ),
+
+ Array(
+ 'id' => 143,
+ 'template' => "{{testString foo bar=\" \"}}",
+ 'data' => Array('foo' => 'good!'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'testString' => function($args, $named) {
+ return $args[0] . '-' . $named['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'good!- ',
+ ),
+
+ Array(
+ 'id' => 143,
+ 'template' => "{{testString foo bar=\"\"}}",
+ 'data' => Array('foo' => 'good!'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'testString' => function($args, $named) {
+ return $args[0] . '-' . $named['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'good!-',
+ ),
+
+ Array(
+ 'id' => 143,
+ 'template' => "{{testString foo bar=' '}}",
+ 'data' => Array('foo' => 'good!'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'testString' => function($args, $named) {
+ return $args[0] . '-' . $named['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'good!- ',
+ ),
+
+ Array(
+ 'id' => 143,
+ 'template' => "{{testString foo bar=''}}",
+ 'data' => Array('foo' => 'good!'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'testString' => function($args, $named) {
+ return $args[0] . '-' . $named['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'good!-',
+ ),
+
+ Array(
+ 'id' => 143,
+ 'template' => "{{testString foo bar=\" \"}}",
+ 'data' => Array('foo' => 'good!'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'testString' => function($arg1, $options) {
+ return $arg1 . '-' . $options['hash']['bar'];
+ }
+ ),
+ ),
+ 'expected' => 'good!- ',
+ ),
+
+ Array(
+ 'id' => 147,
+ 'template' => '{{> test/test3 foo="bar"}}',
+ 'data' => Array('test' => 'OK!', 'foo' => 'error'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_RUNTIMEPARTIAL,
+ 'partials' => Array('test/test3' => '{{test}}, {{foo}}'),
+ ),
+ 'expected' => 'OK!, bar'
+ ),
+
+ Array(
+ 'id' => 147,
+ 'template' => '{{> test/test3 foo="bar"}}',
+ 'data' => new foo(),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_RUNTIMEPARTIAL | LightnCandy::FLAG_INSTANCE,
+ 'partials' => Array('test/test3' => '{{bar}}, {{foo}}'),
+ ),
+ 'expected' => 'OK!, bar'
+ ),
+
+ Array(
+ 'id' => 150,
+ 'template' => '{{{.}}}',
+ 'data' => Array('hello' => 'world'),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'lcrun' => 'MyLCRunClass',
+ ),
+ 'expected' => "[[DEBUG:raw()=>array (\n 'hello' => 'world',\n)]]",
+ ),
+
+ Array(
+ 'id' => 153,
+ 'template' => '{{echo "test[]"}}',
+ 'data' => null,
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'echo' => function ($in) {
+ return "-$in[0]-";
+ }
+ )
+ ),
+ 'expected' => "-test[]-",
+ ),
+
+ Array(
+ 'id' => 153,
+ 'template' => '{{echo \'test[]\'}}',
+ 'data' => null,
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'helpers' => Array(
+ 'echo' => function ($in) {
+ return "-$in[0]-";
+ }
+ )
+ ),
+ 'expected' => "-test[]-",
+ ),
+
+ Array(
+ 'id' => 154,
+ 'template' => 'O{{! this is comment ! ... }}K!',
+ 'data' => null,
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ ),
+ 'expected' => "OK!"
+ ),
+
+ Array(
+ 'template' => '{{testNull null undefined 1}}',
+ 'data' => 'test',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'testNull' => function($arg1, $arg2) {
+ return (($arg1 === null) && ($arg2 === null)) ? 'YES!' : 'no';
+ }
+ )
+ ),
+ 'expected' => 'YES!'
+ ),
+
+ Array(
+ 'template' => '{{> (pname foo) bar}}',
+ 'data' => Array('bar' => 'OK! SUBEXP+PARTIAL!', 'foo' => Array('test/test3')),
+ 'options' => Array(
+ 'helpers' => Array(
+ 'pname' => function($arg) {
+ return $arg[0];
+ }
+ ),
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_RUNTIMEPARTIAL,
+ 'partials' => Array('test/test3' => '{{.}}'),
+ ),
+ 'expected' => 'OK! SUBEXP+PARTIAL!'
+ ),
+
+ Array(
+ 'template' => '{{> testpartial newcontext mixed=foo}}',
+ 'data' => Array('foo' => 'OK!', 'newcontext' => Array('bar' => 'test')),
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_RUNTIMEPARTIAL,
+ 'partials' => Array('testpartial' => '{{bar}}-{{mixed}}'),
+ ),
+ 'expected' => 'test-OK!'
+ ),
+
+ Array(
+ 'template' => '{{[helper]}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'helper' => function () {
+ return 'DEF';
+ }
+ )
+ ),
+ 'data' => Array(),
+ 'expected' => 'DEF'
+ ),
+
+ Array(
+ 'template' => '{{#[helper3]}}ABC{{/[helper3]}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'hbhelpers' => Array(
+ 'helper3' => function () {
+ return 'DEF';
+ }
+ )
+ ),
+ 'data' => Array(),
+ 'expected' => 'DEF'
+ ),
+
+ Array(
+ 'template' => '{{#[helper3]}}ABC{{/[helper3]}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS,
+ 'blockhelpers' => Array(
+ 'helper3' => function () {
+ return Array('a', 'b', 'c');
+ }
+ )
+ ),
+ 'data' => Array(),
+ 'expected' => 'ABC'
+ ),
+
+ Array(
+ 'template' => '{{hash abc=["def=123"]}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_BESTPERFORMANCE,
+ 'hbhelpers' => Array(
+ 'hash' => function ($options) {
+ $ret = '';
+ foreach ($options['hash'] as $k => $v) {
+ $ret .= "$k : $v,";
+ }
+ return $ret;
+ }
+ ),
+ ),
+ 'data' => Array('"def=123"' => 'La!'),
+ 'expected' => 'abc : La!,',
+ ),
+
+ Array(
+ 'template' => '{{hash abc=[\'def=123\']}}',
+ 'options' => Array(
+ 'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_BESTPERFORMANCE,
+ 'hbhelpers' => Array(
+ 'hash' => function ($options) {
+ $ret = '';
+ foreach ($options['hash'] as $k => $v) {
+ $ret .= "$k : $v,";
+ }
+ return $ret;
+ }
+ ),
+ ),
+ 'data' => Array("'def=123'" => 'La!'),
+ 'expected' => 'abc : La!,',
+ ),
+
+ Array(
'template' => 'ABC{{#block "YES!"}}DEF{{foo}}GHI{{else}}NO~{{/block}}JKL',
'options' => Array(
'flags' => LightnCandy::FLAG_HANDLEBARSJS | LightnCandy::FLAG_BESTPERFORMANCE,
@@ -558,6 +1164,9 @@ VAREND
'he' => 'helper1',
'h2' => 'myClass::helper2',
'link' => function ($arg) {
+ if (is_array($arg)) {
+ $arg = 'Array';
+ }
return "<a href=\"{$arg}\">click here</a>";
},
'alink',