summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/dump_ast.php5
-rwxr-xr-xtests/mktest.sh15
-rwxr-xr-xtests/run_all.sh21
-rw-r--r--tests/test.php23
-rw-r--r--tests/test_array/.gitignore3
-rw-r--r--tests/test_array/code.php13
-rw-r--r--tests/test_array/test.tpl1
-rw-r--r--tests/test_array/want1
-rw-r--r--tests/test_blocks/.gitignore3
-rw-r--r--tests/test_blocks/code.php5
-rw-r--r--tests/test_blocks/master.tpl3
-rw-r--r--tests/test_blocks/test.tpl2
-rw-r--r--tests/test_blocks/want3
-rw-r--r--tests/test_escapes/.gitignore3
-rw-r--r--tests/test_escapes/code.php7
-rw-r--r--tests/test_escapes/test.tpl7
-rw-r--r--tests/test_escapes/want7
-rw-r--r--tests/test_loop/.gitignore3
-rw-r--r--tests/test_loop/code.php5
-rw-r--r--tests/test_loop/test.tpl3
-rw-r--r--tests/test_loop/want11
-rw-r--r--tests/test_mktag/.gitignore3
-rw-r--r--tests/test_mktag/code.php5
-rw-r--r--tests/test_mktag/test.tpl12
-rw-r--r--tests/test_mktag/want11
-rw-r--r--tests/test_pseudotags/.gitignore3
-rw-r--r--tests/test_pseudotags/code.php5
-rw-r--r--tests/test_pseudotags/test.tpl2
-rw-r--r--tests/test_pseudotags/want1
-rw-r--r--tests/test_short/.gitignore3
-rw-r--r--tests/test_short/code.php5
-rw-r--r--tests/test_short/test.tpl1
-rw-r--r--tests/test_short/want1
-rw-r--r--tests/test_simple/.gitignore3
-rw-r--r--tests/test_simple/code.php5
-rw-r--r--tests/test_simple/test.tpl1
-rw-r--r--tests/test_simple/want1
37 files changed, 206 insertions, 0 deletions
diff --git a/tests/dump_ast.php b/tests/dump_ast.php
new file mode 100644
index 0000000..418fbc8
--- /dev/null
+++ b/tests/dump_ast.php
@@ -0,0 +1,5 @@
+<?php
+
+require(dirname(__FILE__) . "/../stupid_template_engine.php");
+
+var_dump(\ste\Parser::parse(file_get_contents("php://stdin"), "-"));
diff --git a/tests/mktest.sh b/tests/mktest.sh
new file mode 100755
index 0000000..f249a7f
--- /dev/null
+++ b/tests/mktest.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+mkdir "$1"
+touch "$1/test.tpl"
+touch "$1/want"
+
+echo '<?php
+
+function test_func($ste) {
+
+}' > "$1/code.php"
+
+echo 'have
+*.ast
+*.transc.php' > "$1/.gitignore"
diff --git a/tests/run_all.sh b/tests/run_all.sh
new file mode 100755
index 0000000..5727afb
--- /dev/null
+++ b/tests/run_all.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+r=0
+for t in test_*; do
+ cd $t
+ php ../test.php > have
+ echo -ne "\e[1m$t\e[0m: "
+ if sed 's/\s*//' < have | grep -v '^$' | cmp -s want; then
+ echo "OK"
+ rm *.transc.php
+ else
+ echo "FAILED"
+ for tpl in *.tpl; do
+ php ../dump_ast.php < $tpl > $tpl.ast
+ done
+ r=1
+ fi
+ cd ..
+done
+
+exit $r
diff --git a/tests/test.php b/tests/test.php
new file mode 100644
index 0000000..41713dc
--- /dev/null
+++ b/tests/test.php
@@ -0,0 +1,23 @@
+<?php
+
+require(dirname(__FILE__) . "/../stupid_template_engine.php");
+require("code.php");
+
+class TestStorage implements \ste\StorageAccess {
+ public function load($tpl, &$mode) {
+ $mode = \ste\MODE_SOURCE;
+ return file_get_contents($tpl);
+ }
+
+ public function save($tpl, $data, $mode) {
+ if($mode != \ste\MODE_TRANSCOMPILED) {
+ return;
+ }
+
+ file_put_contents("$tpl.transc.php", $data);
+ }
+}
+
+$ste = new \ste\STECore(new TestStorage());
+test_func($ste);
+echo $ste->exectemplate("test.tpl");
diff --git a/tests/test_array/.gitignore b/tests/test_array/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_array/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_array/code.php b/tests/test_array/code.php
new file mode 100644
index 0000000..58601e2
--- /dev/null
+++ b/tests/test_array/code.php
@@ -0,0 +1,13 @@
+<?php
+
+function test_func($ste) {
+ $ste->vars["foo"] = array(
+ "a" => array(
+ "blabla" => "OK"
+ ),
+ "b" => "bla"
+ );
+ $ste->vars["bar"] = array(
+ "baz" => "a"
+ );
+}
diff --git a/tests/test_array/test.tpl b/tests/test_array/test.tpl
new file mode 100644
index 0000000..050045d
--- /dev/null
+++ b/tests/test_array/test.tpl
@@ -0,0 +1 @@
+${foo[$bar[baz]][${foo[b]}bla]} \ No newline at end of file
diff --git a/tests/test_array/want b/tests/test_array/want
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/tests/test_array/want
@@ -0,0 +1 @@
+OK
diff --git a/tests/test_blocks/.gitignore b/tests/test_blocks/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_blocks/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_blocks/code.php b/tests/test_blocks/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_blocks/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_blocks/master.tpl b/tests/test_blocks/master.tpl
new file mode 100644
index 0000000..a9608bd
--- /dev/null
+++ b/tests/test_blocks/master.tpl
@@ -0,0 +1,3 @@
+Foo
+<ste:block name="blk1">Bar</ste:block>
+<ste:block name="blk2">Baz</ste:block> \ No newline at end of file
diff --git a/tests/test_blocks/test.tpl b/tests/test_blocks/test.tpl
new file mode 100644
index 0000000..44c6891
--- /dev/null
+++ b/tests/test_blocks/test.tpl
@@ -0,0 +1,2 @@
+<ste:load name="master.tpl" />
+<ste:block name="blk1">Replaced</ste:block> \ No newline at end of file
diff --git a/tests/test_blocks/want b/tests/test_blocks/want
new file mode 100644
index 0000000..640cfef
--- /dev/null
+++ b/tests/test_blocks/want
@@ -0,0 +1,3 @@
+Foo
+Replaced
+Baz
diff --git a/tests/test_escapes/.gitignore b/tests/test_escapes/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_escapes/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_escapes/code.php b/tests/test_escapes/code.php
new file mode 100644
index 0000000..05984d1
--- /dev/null
+++ b/tests/test_escapes/code.php
@@ -0,0 +1,7 @@
+<?php
+
+function test_func($ste) {
+ $ste->register_tag("my_echo", function($ste, $params, $sub) {
+ return $params["text"];
+ });
+}
diff --git a/tests/test_escapes/test.tpl b/tests/test_escapes/test.tpl
new file mode 100644
index 0000000..5458fde
--- /dev/null
+++ b/tests/test_escapes/test.tpl
@@ -0,0 +1,7 @@
+\\\\\\\$foo
+\${bar}
+\?{foo|bar|baz}
+?{|Foo|Bar\|Baz}
+<ste:my_echo text="foo\\\"bar\$" />
+<ste:my_echo text='\'' />
+\' \ No newline at end of file
diff --git a/tests/test_escapes/want b/tests/test_escapes/want
new file mode 100644
index 0000000..3278c4d
--- /dev/null
+++ b/tests/test_escapes/want
@@ -0,0 +1,7 @@
+\\\$foo
+${bar}
+?{foo|bar|baz}
+Bar|Baz
+foo\"bar$
+'
+\'
diff --git a/tests/test_loop/.gitignore b/tests/test_loop/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_loop/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_loop/code.php b/tests/test_loop/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_loop/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_loop/test.tpl b/tests/test_loop/test.tpl
new file mode 100644
index 0000000..399f05a
--- /dev/null
+++ b/tests/test_loop/test.tpl
@@ -0,0 +1,3 @@
+<ste:for start="10" stop="0" step="-1" counter="i">
+$i
+</ste:for> \ No newline at end of file
diff --git a/tests/test_loop/want b/tests/test_loop/want
new file mode 100644
index 0000000..30b148d
--- /dev/null
+++ b/tests/test_loop/want
@@ -0,0 +1,11 @@
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
+0
diff --git a/tests/test_mktag/.gitignore b/tests/test_mktag/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_mktag/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_mktag/code.php b/tests/test_mktag/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_mktag/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_mktag/test.tpl b/tests/test_mktag/test.tpl
new file mode 100644
index 0000000..c381ef4
--- /dev/null
+++ b/tests/test_mktag/test.tpl
@@ -0,0 +1,12 @@
+<ste:mktag name="double"><ste:calc>2 * <ste:tagcontent /></ste:calc></ste:mktag>
+<ste:mktag name="foo" mandatory="a|b">
+ <ste:set var="b">$_tag_parameters[b]</ste:set><ste:comment>Ugly hack, since STE does no scoping...</ste:comment>
+ <ste:for counter="i" start="0" stop="$_tag_parameters[a]">
+ <ste:if>
+ <ste:even>$i</ste:even>
+ <ste:then><ste:double>$i</ste:double></ste:then>
+ <ste:else>$b</ste:else>
+ </ste:if>
+ </ste:for>
+</ste:mktag>
+<ste:foo a="10" b="-" /> \ No newline at end of file
diff --git a/tests/test_mktag/want b/tests/test_mktag/want
new file mode 100644
index 0000000..3e2351c
--- /dev/null
+++ b/tests/test_mktag/want
@@ -0,0 +1,11 @@
+0
+-
+4
+-
+8
+-
+12
+-
+16
+-
+20
diff --git a/tests/test_pseudotags/.gitignore b/tests/test_pseudotags/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_pseudotags/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_pseudotags/code.php b/tests/test_pseudotags/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_pseudotags/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_pseudotags/test.tpl b/tests/test_pseudotags/test.tpl
new file mode 100644
index 0000000..756be8a
--- /dev/null
+++ b/tests/test_pseudotags/test.tpl
@@ -0,0 +1,2 @@
+<ste:comment><ste:comment><ste:foo>Ignore $me<ste:rawtext>Foo</ste:rawtext></ste:comment>
+<ste:rawtext><ste:rawtext>$foo bar <ste:bla a="$b" /></ste:rawtext> \ No newline at end of file
diff --git a/tests/test_pseudotags/want b/tests/test_pseudotags/want
new file mode 100644
index 0000000..3aaffdc
--- /dev/null
+++ b/tests/test_pseudotags/want
@@ -0,0 +1 @@
+<ste:rawtext>$foo bar <ste:bla a="$b" />
diff --git a/tests/test_short/.gitignore b/tests/test_short/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_short/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_short/code.php b/tests/test_short/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_short/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_short/test.tpl b/tests/test_short/test.tpl
new file mode 100644
index 0000000..42d498b
--- /dev/null
+++ b/tests/test_short/test.tpl
@@ -0,0 +1 @@
+?{~{foo|eq|bar}|FAIL|?{~{~{1|gt|2}|?{y|eq|neq}|~{3|lt|2}}|OK|FAIL}} \ No newline at end of file
diff --git a/tests/test_short/want b/tests/test_short/want
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/tests/test_short/want
@@ -0,0 +1 @@
+OK
diff --git a/tests/test_simple/.gitignore b/tests/test_simple/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_simple/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_simple/code.php b/tests/test_simple/code.php
new file mode 100644
index 0000000..4c0babc
--- /dev/null
+++ b/tests/test_simple/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+ $ste->vars["foo"] = "World";
+}
diff --git a/tests/test_simple/test.tpl b/tests/test_simple/test.tpl
new file mode 100644
index 0000000..30a4f22
--- /dev/null
+++ b/tests/test_simple/test.tpl
@@ -0,0 +1 @@
+Hello $foo! \ No newline at end of file
diff --git a/tests/test_simple/want b/tests/test_simple/want
new file mode 100644
index 0000000..980a0d5
--- /dev/null
+++ b/tests/test_simple/want
@@ -0,0 +1 @@
+Hello World!