summaryrefslogtreecommitdiff
path: root/t/07-inherit.t
diff options
context:
space:
mode:
Diffstat (limited to 't/07-inherit.t')
-rw-r--r--t/07-inherit.t67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/07-inherit.t b/t/07-inherit.t
new file mode 100644
index 0000000..642b24f
--- /dev/null
+++ b/t/07-inherit.t
@@ -0,0 +1,67 @@
+#!perl
+package Base;{
+use strict;
+use warnings;
+use Tree::Template::Declare builder => '+DAG_Node';
+
+sub doc {
+ my ($self)=@_;
+ tree {
+ node {
+ name 'doc';
+ $self->head();
+ $self->body();
+ }
+ }
+}
+
+sub head {
+ node { name 'title' };
+}
+
+sub body {
+ node {
+ name 'content';
+ $_[0]->content();
+ }
+}
+
+sub content {
+ node { name 'stuff' }
+}
+
+}
+
+package Derived;{
+use strict;
+use warnings;
+use Tree::Template::Declare builder => '+DAG_Node';
+use base 'Base';
+
+sub head {
+ node { name 'whatever' };
+ $_[0]->SUPER::head();
+}
+
+sub content {
+ node { name 'something' }
+}
+
+}
+
+package main;
+use Test::Most tests=>2,'die';
+use strict;
+use warnings;
+
+my $base_tree=Base->doc();
+
+cmp_deeply($base_tree->tree_to_lol(),
+ [[re(qr{title})],[[re(qr{stuff})],re(qr{content})],re(qr{doc})],
+ 'base tree');
+
+my $deriv_tree=Derived->doc();
+
+cmp_deeply($deriv_tree->tree_to_lol(),
+ [[re(qr{whatever})],[re(qr{title})],[[re(qr{something})],re(qr{content})],re(qr{doc})],
+ 'derived tree');