X-Git-Url: http://git.shiar.net/perl/html-form-simple.git/blobdiff_plain/bb5bd81e03c47ff9cc779c5109bd6e042219a1f8..061e1dbc2abe6c89b90348e22e5f3455a2b8328d:/t/html.t diff --git a/t/html.t b/t/html.t index 2fea804..a82c916 100644 --- a/t/html.t +++ b/t/html.t @@ -5,13 +5,39 @@ use warnings; use Test::More; -plan tests => 55; +plan tests => 76; use_ok('HTML::Form::Simple'); my $form = HTML::Form::Simple->new; ok($form, 'new form'); +# basics + +is( + $form->quote('<"test">'), + '<"test">', + 'quote' +); + +is( + $form->quote(\'<"test">'), + '<"test">', + 'quote unquoted' +); + +is( + $form->tag('foo'), + '', + 'tag' +); + +is( + $form->tag('a "' => {'b"' => 'c"'}), + '', + 'tag attributes' +); + # form is( @@ -312,14 +338,14 @@ is_deeply( is( $form->radio(foo => 'test'), - '', + '', 'radio method' ); is( - $form->radio(foo => undef, 2), - '', - 'labelless radio' + $form->radio(foo => undef, 'test'), + '', + 'labeled radio' ); is( @@ -330,15 +356,33 @@ is( is_deeply( [ $form->radio(undef, ['', '<">']) ], + [ + '', + '', + ], + 'multiple radios' +); + +is_deeply( + [ $form->radio(undef, undef, ['', '<">']) ], [ '', '', ], - 'multiple radios' + 'multiple radio labels' ); is_deeply( - [ $form->radio(foo => 'test', ['foo', ''], {value => '', id => ''}) ], + [ $form->radio(undef, [0, 1], undef, 0) ], + [ + '', + '', + ], + 'radio default' +); + +is_deeply( + [ $form->radio(foo => ['foo', ''], 'test', {value => '', id => ''}) ], [ '', '', @@ -347,7 +391,7 @@ is_deeply( ); is_deeply( - [ $form->radio(foo => ['', 0], [0, 1, '']) ], + [ $form->radio(foo => [0, 1, ''], ['', 0]) ], [ '', '', @@ -356,17 +400,50 @@ is_deeply( 'multiple radios with custom values' ); +{ + # make sure arguments aren't modified + my @args = (foo => [0, {value => 1}], [0, 1], {name => 0, value => 1}); + my @orgs = (foo => [0, {value => 1}], [0, 1], {name => 0, value => 1}); + my @output = ( + '', + '', + ); + + is_deeply( + [ $form->radio(@args) ], + \@output, + 'options var to radio' + ); + + is_deeply( + [ $form->check(@args) ], + [ + '', + '', + ], + 'options var to check' + ); + + is( + scalar $form->radio(@args), + join('', @output), + 'options var again to radio' + ); + + is_deeply(\@args, \@orgs, 'options var unmodified'); +} + # check is( $form->check('foo'), - '', + '', 'check method' ); is( $form->check(foo => '<">'), - '', + '', 'labeled checkbox' ); @@ -382,13 +459,57 @@ is_deeply( 'anonymous checkbox' ); +is( + $form->check(foo => [undef]), + '', + 'multipart check' +); + +is_deeply( + [ $form->check(foo => [{value => undef}, undef]) ], + [ + '', + '', + ], + 'multiple checkboxes' +); + +is( + $form->check(foo => [undef], {id => ''}), + '', + 'idless checks' +); + +is_deeply( + [ $form->check( + foo => [ {id => 'quux'}, {name => 'name'}, {value => 0}, {id => ''}, undef ], {id => 'bar'} + ) ], + [ + '', + '', + '', + '', + '', + ], + 'check overrides' +); + +is_deeply( + [ $form->check(foo => ['bar', {name => 'bar'}], {name => 'ignored'}) ], + [ + '', + '', + ], + 'checkbox names' +); + is_deeply( [ $form->check(undef, ['', '<">']) ], [ '', '', ], - 'multiple checkboxes' + 'anonymous checkboxes' ); is_deeply( @@ -422,5 +543,43 @@ is_deeply( 'various checkboxes' ); +# defaults + +my $defform = HTML::Form::Simple->new({foo => '<">', '' => 'empty', 0 => 0}); +ok($defform, 'form with defaults'); + +is( + $defform->hidden(''), + '', + 'hidden with default' +); + +is( + $defform->hidden(undef), + '', + 'nameless hidden' +); + +is( + $defform->text('foo'), + '', + 'input with default' +); + +is( + $defform->text('foo', {value => 'custom'}), + '', + 'input with value and default' +); + +is_deeply( + [ $defform->radio(0 => [1, 0]) ], + [ + '', + '', + ], + 'select with default' +); + #TODO