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{<!>
\n<>"'}, q{attr (br)}); is($t->setTemplate(q{<&DATA>})->setAttr(DATA => 'br')->expand(DATA => qq{\n<>"'})->toStr, qq{<!>
\n<>"'}, q{attr (br)}); is($t->setTemplate(q{<&DATA><&DATA2>})->getHtml, q{<&data><&data2>},'getHtml'); ok($t->setTemplate($TMPL), 'setTemplate'); is(trim $t->getHtml, trim qq{}, 'getHtml'); is(trim $t->node('FORM')->extForm('FORM')->getHtml, trim qq{
}, 'extForm'); dies_ok {$t->setTemplate(qq{})->toStr} 'include die'; ok($t->setTemplate(qq{})->toStr, 'include test'); dies_ok {$t->setTemplate(q{
})->getForm('test')} 'getForm die'; dies_ok {$t->setTemplate(q{
})->setForm($form->set(aaa => '333'), 'test')} 'setForm die (no form for name)'; dies_ok {$t->setTemplate(q{
})->extForm('test')} 'extForm die'; dies_ok {$t->setTemplate(q{
})->addHiddenForm($TL->newForm(bbb => 666), \123)} 'addHiddenForm die'; dies_ok {$t->setTemplate(q{
})->addHiddenForm($TL->newForm(bbb => 666), 'test')} 'addHiddenForm die'; $t->setTemplate($TMPL3); ok($form = $t->getForm, 'getForm (1)'); ok($t->setForm($form->set(aaa => 333,bbb => 222,checkbox => 'checkbox',radiobutton => 'radiobutton',textfield2 => 'bbb',select2 => 'bbb',hiddenField => 0,submit => 1)), 'setForm (1)'); is(trim $t->extForm->getHtml, trim qq{
}, 'extForm'); $t->setTemplate($TMPL3_XML); ok($form = $t->getForm, 'getForm (1)'); ok($t->setForm($form->set(aaa => 333,bbb => 222,checkbox => 'checkbox',radiobutton => 'radiobutton',textfield2 => '',select2 => 'bbb',hiddenField => 0,submit => 1)), 'setForm (1)'); ok($t->addHiddenForm($TL->newForm(bbb => 666))); #$TL->{filter}{$priority} = $classname->_new(%option); #$TL->_updateFilterList('filter'); #ok($t->flush, 'flush'); $t->setTemplate($TMPL5); $t->setForm({}, 'form'); is(trim $t->toStr, trim $TMPL5, 'the form is unchanged'); my $TMPL10 = q{
aaa
}; my $TMPL10_undef = q{
aaa
}; my $TMPL10_0 = q{
aaa
}; my $TMPL10_1 = q{
aaa
}; is(trim $t->setTemplate($TMPL10)->setForm({ aa => '' })->toStr, $TMPL10_undef, 'setForm empty value'); is(trim $t->setTemplate($TMPL10)->setForm({ aa => '0' })->toStr, $TMPL10_0, 'setForm 0 value'); is(trim $t->setTemplate($TMPL10)->setForm({ aa => '1' })->toStr, $TMPL10_1, 'setForm 1 value'); my $TMPL11 = <> EOF dies_ok { $t->setTemplate($TMPL11)->setForm({foo => 100}); } 'setForm() with leaving unexpanded tags'; dies_ok { $t->setTemplate($TMPL11)->addHiddenForm({foo => 100}); } 'addHiddenForm() with leaving unexpanded tags'; lives_ok { $t->setTemplate($TMPL11)->expand({tag => 'aaa'})->setForm({foo => 100}); } 'setForm() without unexpanded tags'; my $TMPL12 = < Hello, world! EOF lives_ok { $t->setTemplate($TMPL12)->setForm({foo => 100}); } 'setForm() with inside'; my $TMPL13 = <
EOF lives_ok { $t->setTemplate($TMPL13)->setForm({foo => 100}); } 'setForm() with leaving an unexpanded template tag outside any HTML tags'; my $TMPL14 = < EOF is (trim $t->setTemplate($TMPL14) ->setAttr(url => 'js') ->expand(url => 'http://.../hoge.cgi') ->toStr, q{}, 'expanding tags in html tag'); my $TMPL15 = '<&foo>'; is (trim $t->setTemplate($TMPL15) ->setAttr(foo => 'raw') ->expand(foo => q{}) ->toStr, q{}, 'expanding tags in html tag'); my $TMPL16 = < EOF is (trim $t->setTemplate($TMPL16)->setForm({area => 'a'})->toStr, trim q{
}); is (trim $t->setTemplate($TMPL16)->setForm({area => 'b'})->toStr, trim q{
}); my $TMPL17 = < EOF is ($t->setTemplate($TMPL17)->setForm({foo => "\n".'abcde'."\n"})->toStr, < EOF # ----------------------------------------------------------------------------- # trim. # test_trim(); sub test_trim { my $tmpl; my $src = < <&LABEL> EOF $tmpl = $TL->newTemplate(); $tmpl->setTemplate($src); $tmpl->node('row')->node('item')->trim(); $tmpl->node('row')->node('item')->add({LABEL=>1}); $tmpl->node('row')->node('item')->add({LABEL=>2}); $tmpl->node('row')->trim->add; is($tmpl->toStr, < 1 2 EOF $tmpl = $TL->newTemplate(); $tmpl->setTemplate($src); $tmpl->node('row')->node('item')->trim('-join'); $tmpl->node('row')->node('item')->add({LABEL=>1}); $tmpl->node('row')->node('item')->add({LABEL=>2}); $tmpl->node('row')->trim->add; is($tmpl->toStr, < 12 EOF } # ----------------------------------------------------------------------------- # End of File. # -----------------------------------------------------------------------------