Debian lenny version packages
[pkg-perl] / deb-src / libwww-perl / libwww-perl-5.813 / t / html / form-param.t
1 #!perl -w
2
3 use strict;
4 use Test qw(plan ok);
5
6 plan tests => 24;
7
8 use HTML::Form;
9
10 my $form = HTML::Form->parse(<<"EOT", "http://example.com");
11 <form>
12 <input type="hidden" name="hidden_1">
13
14 <input type="checkbox" name="checkbox_1" value="c1_v1" CHECKED>
15 <input type="checkbox" name="checkbox_1" value="c1_v2" CHECKED>
16 <input type="checkbox" name="checkbox_2" value="c2_v1" CHECKED>
17
18 <select name="multi_select_field" multiple="1">
19  <option> 1
20  <option> 2
21  <option> 3
22 </select>
23 </form>
24 EOT
25
26 my @warn;
27 $SIG{__WARN__} = sub { push(@warn, @_) };
28
29 # list names
30 ok($form->param, 4);
31 ok(j($form->param), "hidden_1:checkbox_1:checkbox_2:multi_select_field");
32
33 # get
34 ok($form->param('hidden_1'), '');
35 ok($form->param('checkbox_1'), 'c1_v1');
36 ok(j($form->param('checkbox_1')), 'c1_v1:c1_v2');
37 ok($form->param('checkbox_2'), 'c2_v1');
38 ok(j($form->param('checkbox_2')), 'c2_v1');
39 ok(!defined($form->param('multi_select_field')));
40 ok(j($form->param('multi_select_field')), '');
41 ok(!defined($form->param('unknown')));
42 ok(j($form->param('unknown')), '');
43 ok(!@warn);
44
45 # set
46 $form->param('hidden_1', 'x');
47 ok(@warn && $warn[0] =~ /^Input 'hidden_1' is readonly/);
48 @warn = ();
49 ok(j($form->param('hidden_1')), 'x');
50
51 eval {
52     $form->param('checkbox_1', 'foo');
53 };
54 ok($@);
55 ok(j($form->param('checkbox_1')), 'c1_v1:c1_v2');
56
57 $form->param('checkbox_1', 'c1_v2');
58 ok(j($form->param('checkbox_1')), 'c1_v2');
59 $form->param('checkbox_1', 'c1_v2');
60 ok(j($form->param('checkbox_1')), 'c1_v2');
61 $form->param('checkbox_1', []);
62 ok(j($form->param('checkbox_1')), '');
63 $form->param('checkbox_1', ['c1_v2', 'c1_v1']);
64 ok(j($form->param('checkbox_1')), 'c1_v1:c1_v2');
65 $form->param('checkbox_1', []);
66 ok(j($form->param('checkbox_1')), '');
67 $form->param('checkbox_1', 'c1_v2', 'c1_v1');
68 ok(j($form->param('checkbox_1')), 'c1_v1:c1_v2');
69
70 $form->param('multi_select_field', 3, 2);
71 ok(j($form->param('multi_select_field')), "2:3");
72
73 print "# Done\n";
74 ok(!@warn);
75
76 sub j {
77     join(":", @_);
78 }