summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-02 16:22:46 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-02 16:22:46 -0500
commitfa8c5a1f9e8dd17424bc28d01bfe661dde50ddd7 (patch)
tree497be368923725bf07e931f023f74fb7b276cec7
parentf8163f38482ebe4a48b08a3f49080821e62e383b (diff)
downloadtext-handlebars-fa8c5a1f9e8dd17424bc28d01bfe661dde50ddd7.tar.gz
text-handlebars-fa8c5a1f9e8dd17424bc28d01bfe661dde50ddd7.zip
more tests
-rw-r--r--t/expressions.t37
-rw-r--r--t/mustache-extra.t135
2 files changed, 172 insertions, 0 deletions
diff --git a/t/expressions.t b/t/expressions.t
index 0a3ebf3..02b1b3a 100644
--- a/t/expressions.t
+++ b/t/expressions.t
@@ -26,4 +26,41 @@ render_ok(
"/ separator"
);
+{ local $TODO = "unimplemented";
+render_ok(
+ '{{#article}}<h1>{{title}}</h1> - {{../date}}{{/article}}',
+ { article => { title => 'Backtracking' }, date => '2012-10-01' },
+ '<h1>Backtracking</h1> - 2012-10-01',
+ "backtracking with ../"
+);
+
+render_ok(
+ <<'TEMPLATE',
+{{#page}}
+{{#article}}<h1>{{title}}</h1> - {{../../date}}{{/article}}
+{{/page}}
+TEMPLATE
+ {
+ page => {
+ article => { title => 'Multilevel Backtracking' },
+ },
+ date => '2012-10-01',
+ },
+ <<'RENDERED',
+<h1>Multilevel Backtracking</h1> - 2012-10-01
+RENDERED
+ "multilevel backtracking with ../"
+);
+
+render_ok(
+ '{{#article}}<h1>{{title}}</h1> - {{../metadata.date}}{{/article}}',
+ {
+ article => { title => 'Backtracking' },
+ metadata => { date => '2012-10-01' },
+ },
+ '<h1>Backtracking</h1> - 2012-10-01',
+ "backtracking into other hash variables with ../ and ."
+);
+}
+
done_testing;
diff --git a/t/mustache-extra.t b/t/mustache-extra.t
new file mode 100644
index 0000000..f1ee3e7
--- /dev/null
+++ b/t/mustache-extra.t
@@ -0,0 +1,135 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use lib 't/lib';
+use Test::More;
+use Test::Handlebars;
+
+render_ok(
+ <<'TEMPLATE',
+Shown.
+{{#nothin}}
+Never shown!
+{{/nothin}}
+TEMPLATE
+ {
+ person => 1,
+ nothin => 0,
+ },
+ <<'RENDERED',
+Shown.
+RENDERED
+ "section with no value"
+);
+
+render_ok(
+ <<'TEMPLATE',
+Shown.
+{{#nothin}}
+Never shown!
+{{/nothin}}
+TEMPLATE
+ {
+ person => 1,
+ nothin => [],
+ },
+ <<'RENDERED',
+Shown.
+RENDERED
+ "section with no value"
+);
+
+render_ok(
+ <<'TEMPLATE',
+<h1>Today{{!
+ignore me
+}}.</h1>
+TEMPLATE
+ {
+ },
+ <<'RENDERED',
+<h1>Today.</h1>
+RENDERED
+ "comments"
+);
+
+render_ok(
+ '{{#l1}}{{#l2}}{{#l3}}{{l4}}{{/l3}}{{/l2}}{{/l1}}',
+ { l1 => { l2 => { l3 => { l4 => 'FOO' } } } },
+ 'FOO',
+ "multi-level nesting"
+);
+
+render_ok(
+ <<'TEMPLATE',
+l1:
+{{#l1}}
+ l2:
+{{#l2}}
+ l3:
+{{#l3}}
+ l4: {{l4}}
+{{/l3}}
+{{/l2}}
+{{/l1}}
+TEMPLATE
+ {
+ l1 => [
+ {
+ l2 => {
+ l3 => [
+ { l4 => 'FOO' },
+ { l4 => 'BAR' },
+ { l4 => 'BAZ' },
+ ],
+ },
+ },
+ {
+ l2 => {
+ l3 => [
+ { l4 => 'foo' },
+ { l4 => 'bar' },
+ { l4 => 'baz' },
+ ],
+ },
+ },
+ ],
+ },
+ <<'RENDERED',
+l1:
+ l2:
+ l3:
+ l4: FOO
+ l4: BAR
+ l4: BAZ
+ l2:
+ l3:
+ l4: foo
+ l4: bar
+ l4: baz
+RENDERED
+ "multi-level nesting"
+);
+
+render_ok(
+ <<'TEMPLATE',
+{{#name}}
+Name: {{name}}
+{{/name}}
+TEMPLATE
+ {
+ name => [
+ { name => 'foo' },
+ { name => 'bar' },
+ { name => 'baz' },
+ ],
+ },
+ <<'RENDERED',
+Name: foo
+Name: bar
+Name: baz
+RENDERED
+ "reusing variable names while nesting"
+);
+
+done_testing;