X-Git-Url: http://git.shiar.net/perl/html-form-simple.git/blobdiff_plain/d74d61d638a9f0c83f3860de02225c16309ccf2d..906dde920f0d0f551dda592916347b2555b4b378:/t/html.t diff --git a/t/html.t b/t/html.t index 3c6d8f4..757b248 100644 --- a/t/html.t +++ b/t/html.t @@ -5,7 +5,7 @@ use warnings; use Test::More; -plan tests => 53; +plan tests => 66; use_ok('HTML::Form::Simple'); @@ -58,6 +58,15 @@ is( 'hidden options' ); +is_deeply( + [ $form->hidden(foo => [1, 0], {class => 'test'}) ], + [ + '', + '', + ], + 'hidden array' +); + is_deeply( [ $form->hidden({2 => 0, 10 => 1}, {class => 'test'}) ], [ @@ -67,6 +76,19 @@ is_deeply( 'hidden hash' ); +{ + local $, = "\n"; + is( + scalar $form->hidden({2 => [1, 0], 10 => 2}, {class => 'test'}), + join("\n", + '', + '', + '', + ), + 'scalar hiddens' + ); +} + # submit is( @@ -96,43 +118,43 @@ is( # input is( - $form->input, + $form->text, '', 'empty input' ); is( - $form->input(undef, undef, undef), + $form->text(undef, undef, undef), '', 'explicit empty input' ); is( - $form->input('test'), + $form->text('test'), '', 'input with name' ); is( - $form->input(undef, 'test'), + $form->text(undef, 'test'), '', 'input with value' ); is( - $form->input(undef, {value => 'test'}), + $form->text(undef, {value => 'test'}), '', 'input with attribute value' ); is( - $form->input({name => 'test', value => ''}), + $form->text({name => 'test', value => ''}), '', 'input with only attributes' ); is( - $form->input('', '', { + $form->text('', '', { disabled => 0, something => undef, class => undef, @@ -145,31 +167,31 @@ is( ); is( - $form->input(undef, undef, {name => '0', value => '0'}), + $form->text(undef, undef, {name => '0', value => '0'}), '', 'input overrides' ); is( - $form->input('name', {id => ''}), + $form->text('name', {id => ''}), '', 'input with id override' ); is( - $form->input('<">', '<">', {id => '>"<'}), + $form->text('<">', '<">', {id => '>"<'}), '', 'input quoting' ); is( - $form->input(undef, {disabled => 'something'}), + $form->text(undef, {disabled => 'something'}), '', 'disabled input' ); is( - $form->input({type => 'password'}), + $form->text({type => 'password'}), '', 'password' ); @@ -177,19 +199,19 @@ is( # textarea is( - $form->input({rows => 0}), + $form->text({rows => 0}), '', 'minimal textarea' ); is( - $form->input(foo => 'bar', {cols => 42, rows => 1, disabled => 1}), + $form->text(foo => 'bar', {cols => 42, rows => 1, disabled => 1}), '', 'textarea' ); is( - $form->input(undef, qq{&bl'a"\n .}, {cols => undef, rows => '<">'}), + $form->text(undef, qq{&bl'a"\n .}, {cols => undef, rows => '<">'}), qq{}, 'textarea quoting' ); @@ -290,14 +312,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( @@ -308,15 +330,24 @@ 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(foo => ['foo', ''], 'test', {value => '', id => ''}) ], [ '', '', @@ -325,7 +356,7 @@ is_deeply( ); is_deeply( - [ $form->radio(foo => ['', 0], [0, 1, '']) ], + [ $form->radio(foo => [0, 1, ''], ['', 0]) ], [ '', '', @@ -334,6 +365,39 @@ 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( @@ -400,5 +464,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