use Test::More tests => 108 +2 # trim. +4 # existsFile ; use Test::Exception; use strict; use warnings; #use Smart::Comments; BEGIN { eval q{use Tripletail qw(/dev/null)}; open my $fh, '>', "include$$.txt"; print $fh qq{ }; close $fh; } END { unlink "tmp$$.ini"; unlink "include$$.txt"; } my $TMPL3_XML = qq{
}; my $TMPL3 = qq{ }; my $TMPL4 = qq{ }; my $TMPL2 = qq{ }; my $TMPL = qq{ ::<&TAG>:: }; my $TMPL5 = qq{ }; do { open my $fh, '>', "tmp$$.ini"; print $fh $TMPL; close $fh; }; sub trim ($) { $_ = shift; s/^\s*|\s*$//mg; $_; } my $t; ok($t = $TL->newTemplate, 'newTemplate'); ok($t = $TL->newTemplate("tmp$$.ini"), 'newTemplate'); ok($t->setTemplate(''), 'setTemplate'); dies_ok {$t->setTemplate('')} 'setTemplate die'; dies_ok {$t->setTemplate('')} 'setTemplate die'; dies_ok {$t->setTemplate('')} 'setTemplate die'; ok($t->setTemplate($TMPL), 'setTemplate'); is($t->exists('FOO'), 1 , 'exists'); is($t->exists('FOO2'), '' , 'exists'); dies_ok {$t->exists} 'exists die'; dies_ok {$t->exists(\123)} 'exists die'; my $form; $t->setTemplate($TMPL2); ok($form = $t->getForm('FORM'), 'getForm (1)'); is($form->toLink('./'), './?aaa=111&INT=1', 'getForm (2)'); ok($t->setForm($form->set(aaa => 333), 'FORM'), 'setForm (1)'); is(trim $t->getHtml, trim qq{ }, 'setForm (2)'); ok($t->addHiddenForm( $TL->newForm(bbb => 666), 'FORM'), 'addHiddenForm (1)'); is(trim $t->getHtml, trim qq{ }, 'addHiddenForm (2)'); ok($t->addHiddenForm({ccc => 777}, 'FORM'), 'addHiddenForm (3)'); is(trim $t->getHtml, trim qq{ }, 'addHiddenForm (4)'); ok($t->extForm('FORM'), 'extForm (1)'); ok($t->addHiddenForm( $TL->newForm(ddd => 666), 'FORM'), 'addHiddenForm (1)'); is(trim $t->getHtml, trim qq{ }, 'addHiddenForm (2)'); $t->setTemplate($TMPL4); ok($form = $t->getForm('FORM'), 'getForm (3)'); is($form->toLink('./'), './?aaa=111&INT=1', 'getForm (3)'); ok($t->setForm($form->set(aaa => 333), 'FORM'), 'setForm (3)'); is(trim $t->getHtml, trim qq{ }, 'setForm (4)'); dies_ok {$t->setHtml} 'setHtml die'; dies_ok {$t->setHtml(\123)} 'setHtml die'; ok($t->setHtml('test') , 'setHtml'); is($t->getHtml, 'test' , 'getHtml'); is($t->isXHTML, undef , 'isXHTML'); ok($t->loadTemplate("tmp$$.ini"), 'loadTemplate'); is($t->isRoot, 1 , 'isRoot'); dies_ok {$t->setTemplate} 'setTemplate die'; dies_ok {$t->setTemplate(\123)} 'setTemplate die'; dies_ok {$t->loadTemplate} 'loadTemplate die'; dies_ok {$t->loadTemplate(\123)} 'loadTemplate die'; dies_ok {$t->loadTemplate('./../../../../../../../../dummy.txt')} 'loadTemplate die'; $t = $TL->newTemplate; ok($t->loadTemplate("tmp$$.ini"), 'loadTemplate'); dies_ok {$t->existsFile} 'existsFile die'; dies_ok {$t->existsFile(\123)} 'existsFile die'; is($t->existsFile('./../../../../../../../../dummy.txt'), undef, 'existsFile'); is($t->existsFile("tmp$$.ini"), 1, 'existsFile'); my $node; dies_ok {$t->node} 'node die'; dies_ok {$t->node(\123)} 'node die'; dies_ok {$t->node('test')} 'node die'; ok($node = $t->node('foo'), 'node'); ok($node->add(tag => 1), 'add'); dies_ok {$node->add} 'add die'; dies_ok {$node->add(tag2 => undef)} 'add die'; dies_ok {$node->add(tag2 => \123)} 'add die'; is(trim $t->toStr, '::1::::1::', 'toStr'); ### form: $t->node('FORM') dies_ok {$form = $t->node('FORM')->getForm(\123)} 'getForm die'; ok($form = $t->node('FORM')->getForm('FORM'), 'getForm (1)'); is($form->toLink('./'), './?aaa=111&INT=1', 'getForm (2)'); ### form: $t->node('FORM') dies_ok {$t->node('FORM')->setForm} 'setForm die (no arg)'; dies_ok {$t->node('FORM')->setForm(\123)} 'setForm die (scalar-ref)'; dies_ok {$t->node('FORM')->setForm($form->set(aaa => 333), \123)} 'setForm die (scalar-ref on form name)'; dies_ok {$t->node('FORM')->extForm(\123)} 'extForm die'; dies_ok {$t->addHiddenForm} 'addHiddenForm die'; dies_ok {$t->addHiddenForm(\123)} 'addHiddenForm die'; ok($t->node('FORM')->setForm($form->set(aaa => 111), 'FORM'), 'setForm (1)'); is(trim $t->node('FORM')->getHtml, trim qq{ }, 'setForm (2)'); ok($t->node('FORM')->setForm({aaa => 333}, 'FORM'), 'setForm (1)'); is(trim $t->node('FORM')->getHtml, trim qq{ }, 'setForm (3)'); ok($t->node('FORM')->addHiddenForm( $TL->newForm(bbb => 666), 'FORM'), 'addHiddenForm (1)'); is(trim $t->node('FORM')->getHtml, trim qq{ }, 'addHiddenForm (2)'); dies_ok {$t->setTemplate(q{<&DATA><&DATA2>})->expand(DATA => qq{"'})} 'expand die'; dies_ok {$t->setTemplate(q{<&DATA>})->setAttr(\123)} 'attr die'; dies_ok {$t->setTemplate(q{<&DATA>})->setAttr({DATA => 'test'})} 'attr die'; dies_ok {$t->setTemplate(q{<&DATA>})->expand(\123)} 'expand die'; dies_ok {$t->setTemplate(q{<&DATA>})->expandAny(\123)} 'expandAny die'; dies_ok {$t->setTemplate(q{<&DATA><&DATA2>})->expandAny(DATA => qq{"'})->toStr} 'toStr die'; ok($t->setTemplate(q{<&DATA><&DATA2>})->expandAny(DATA => qq{"'}), 'expandAny'); ok($t->setTemplate(q{<&DATA><&DATA2>})->expandAny({DATA => qq{"'}}), 'expandAny'); is($t->setTemplate(q{<&DATA>})->expand(DATA => qq{"'})->toStr, q{<!>"'}, q{attr (DEFAULT)}); is($t->setTemplate(q{<&DATA>})->setAttr({DATA => 'plain'})->expand({DATA => qq{"'}})->toStr, q{<!>"'}, q{attr (plain = DEFAULT)}); is($t->setTemplate(q{<&DATA>})->setAttr(DATA => 'raw')->expand(DATA => qq{"'})->toStr, q{"'}, q{attr (raw)}); is($t->setTemplate(q{<&DATA>})->setAttr(DATA => 'js')->expand(DATA => qq{\n\r"'})->toStr, q{\x3c!\x3e\n\r\"\'}, q{attr (js)}); is($t->setTemplate(q{<&DATA>})->setAttr(DATA => 'br')->expand(DATA => qq{\n<>"'})->toStr, qq{<!>