summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2014-05-24 01:39:33 +0200
committerKevin Chabowski <kevin@kch42.de>2014-05-24 01:39:33 +0200
commit84d815f4e006e02521759070bb89025dab80b219 (patch)
tree418a03f0b8be181cb29230ad5e808d3213b4d3cb /tests
parentfdbe2e9521aa54ec6e0b70c1cb0f532248e531e4 (diff)
downloadste-84d815f4e006e02521759070bb89025dab80b219.tar.gz
ste-84d815f4e006e02521759070bb89025dab80b219.tar.bz2
ste-84d815f4e006e02521759070bb89025dab80b219.zip
Added scoping.
ste:mktag generated tags now have an own scope. They even resemble closures, since they inherit their parent scope. A lot of work was done to keep this compatible with older programs. However: * Templates that relied on the non-scoping behavior of tags will probably fail. * Since $ste->vars is no longer an actual array, things like $ste->vars["foo"]["bar"] = "baz" are no longer possible! A single field access will still work: $ste->vars["foo"] = "bar"
Diffstat (limited to 'tests')
-rw-r--r--tests/test_closure/.gitignore3
-rw-r--r--tests/test_closure/code.php5
-rw-r--r--tests/test_closure/test.tpl8
-rw-r--r--tests/test_closure/want1
-rw-r--r--tests/test_mktag/test.tpl3
-rw-r--r--tests/test_recursive/.gitignore3
-rw-r--r--tests/test_recursive/code.php5
-rw-r--r--tests/test_recursive/test.tpl11
-rw-r--r--tests/test_recursive/want1
-rw-r--r--tests/test_scoping/.gitignore3
-rw-r--r--tests/test_scoping/code.php5
-rw-r--r--tests/test_scoping/test.tpl6
-rw-r--r--tests/test_scoping/want0
13 files changed, 52 insertions, 2 deletions
diff --git a/tests/test_closure/.gitignore b/tests/test_closure/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_closure/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_closure/code.php b/tests/test_closure/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_closure/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_closure/test.tpl b/tests/test_closure/test.tpl
new file mode 100644
index 0000000..c13bd5a
--- /dev/null
+++ b/tests/test_closure/test.tpl
@@ -0,0 +1,8 @@
+<ste:mktag name="initfoo">
+ <ste:set var="x"><ste:tagcontent /></ste:set>
+ <ste:mktag name="foo">
+ <ste:calc>$x + <ste:tagcontent /></ste:calc>
+ </ste:mktag>
+</ste:mktag>
+<ste:initfoo>10</ste:initfoo>
+<ste:foo>20</ste:foo> \ No newline at end of file
diff --git a/tests/test_closure/want b/tests/test_closure/want
new file mode 100644
index 0000000..64bb6b7
--- /dev/null
+++ b/tests/test_closure/want
@@ -0,0 +1 @@
+30
diff --git a/tests/test_mktag/test.tpl b/tests/test_mktag/test.tpl
index c381ef4..c446206 100644
--- a/tests/test_mktag/test.tpl
+++ b/tests/test_mktag/test.tpl
@@ -1,11 +1,10 @@
<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:else>$_tag_parameters[b]</ste:else>
</ste:if>
</ste:for>
</ste:mktag>
diff --git a/tests/test_recursive/.gitignore b/tests/test_recursive/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_recursive/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_recursive/code.php b/tests/test_recursive/code.php
new file mode 100644
index 0000000..4ca3852
--- /dev/null
+++ b/tests/test_recursive/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+ $ste->mute_runtime_errors = false;
+}
diff --git a/tests/test_recursive/test.tpl b/tests/test_recursive/test.tpl
new file mode 100644
index 0000000..bea3934
--- /dev/null
+++ b/tests/test_recursive/test.tpl
@@ -0,0 +1,11 @@
+<ste:mktag name="fac" mandatory="n">
+ <ste:if>
+ ~{$_tag_parameters[n]|eq|0}
+ <ste:then>1</ste:then>
+ <ste:else>
+ <ste:set var="nextn"><ste:calc>$_tag_parameters[n] - 1</ste:calc></ste:set>
+ <ste:calc><ste:fac n="$nextn" /> * $_tag_parameters[n]</ste:calc>
+ </ste:else>
+ </ste:if>
+</ste:mktag>
+<ste:fac n="10" /> \ No newline at end of file
diff --git a/tests/test_recursive/want b/tests/test_recursive/want
new file mode 100644
index 0000000..3fbd4a8
--- /dev/null
+++ b/tests/test_recursive/want
@@ -0,0 +1 @@
+3628800
diff --git a/tests/test_scoping/.gitignore b/tests/test_scoping/.gitignore
new file mode 100644
index 0000000..de2a41b
--- /dev/null
+++ b/tests/test_scoping/.gitignore
@@ -0,0 +1,3 @@
+have
+*.ast
+*.transc.php
diff --git a/tests/test_scoping/code.php b/tests/test_scoping/code.php
new file mode 100644
index 0000000..de8c553
--- /dev/null
+++ b/tests/test_scoping/code.php
@@ -0,0 +1,5 @@
+<?php
+
+function test_func($ste) {
+
+}
diff --git a/tests/test_scoping/test.tpl b/tests/test_scoping/test.tpl
new file mode 100644
index 0000000..25a46e7
--- /dev/null
+++ b/tests/test_scoping/test.tpl
@@ -0,0 +1,6 @@
+<ste:mktag name="foo">
+ <ste:set var="bla">!</ste:set>
+</ste:mktag>
+
+<ste:foo />
+$bla \ No newline at end of file
diff --git a/tests/test_scoping/want b/tests/test_scoping/want
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test_scoping/want