upgrade GCI from 3.43 to 3.45
[p5sagit/p5-mst-13.2.git] / lib / CGI / t / form.t
1 #!/usr/local/bin/perl -w
2
3 use Test::More tests => 22;
4
5 BEGIN { use_ok('CGI'); };
6 use CGI (':standard','-no_debug','-tabindex');
7
8 my $CRLF = "\015\012";
9 if ($^O eq 'VMS') {
10     $CRLF = "\n";  # via web server carriage is inserted automatically
11 }
12 if (ord("\t") != 9) { # EBCDIC?
13     $CRLF = "\r\n";
14 }
15
16
17 # Set up a CGI environment
18 $ENV{REQUEST_METHOD}  = 'GET';
19 $ENV{QUERY_STRING}    = 'game=chess&game=checkers&weather=dull';
20 $ENV{PATH_INFO}       = '/somewhere/else';
21 $ENV{PATH_TRANSLATED} = '/usr/local/somewhere/else';
22 $ENV{SCRIPT_NAME}     ='/cgi-bin/foo.cgi';
23 $ENV{SERVER_PROTOCOL} = 'HTTP/1.0';
24 $ENV{SERVER_PORT}     = 8080;
25 $ENV{SERVER_NAME}     = 'the.good.ship.lollypop.com';
26
27 is(start_form(-action=>'foobar',-method=>'get'),
28    qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
29    "start_form()");
30
31 is(submit(),
32    qq(<input type="submit" tabindex="1" name=".submit" />),
33    "submit()");
34
35 is(submit(-name  => 'foo',
36           -value => 'bar'),
37    qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
38    "submit(-name,-value)");
39
40 is(submit({-name  => 'foo',
41            -value => 'bar'}),
42    qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
43    "submit({-name,-value})");
44
45 is(textfield(-name => 'weather'),
46    qq(<input type="text" name="weather" tabindex="4" value="dull" />),
47    "textfield({-name})");
48
49 is(textfield(-name  => 'weather',
50              -value => 'nice'),
51    qq(<input type="text" name="weather" tabindex="5" value="dull" />),
52    "textfield({-name,-value})");
53
54 is(textfield(-name     => 'weather',
55              -value    => 'nice',
56              -override => 1),
57    qq(<input type="text" name="weather" tabindex="6" value="nice" />),
58    "textfield({-name,-value,-override})");
59
60 is(checkbox(-name  => 'weather',
61             -value => 'nice'),
62    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
63    "checkbox()");
64
65 is(checkbox(-name  => 'weather',
66             -value => 'nice',
67             -label => 'forecast'),
68    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" />forecast</label>),
69    "checkbox()");
70
71 is(checkbox(-name     => 'weather',
72             -value    => 'nice',
73             -label    => 'forecast',
74             -checked  => 1,
75             -override => 1),
76    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="9" checked="checked" />forecast</label>),
77    "checkbox()");
78
79 is(checkbox(-name  => 'weather',
80             -value => 'dull',
81             -label => 'forecast'),
82    qq(<label><input type="checkbox" name="weather" value="dull" tabindex="10" checked="checked" />forecast</label>),
83    "checkbox()");
84
85 is(radio_group(-name => 'game'),
86    qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="11" />chess</label> <label><input type="radio" name="game" value="checkers" tabindex="12" />checkers</label>),
87    'radio_group()');
88
89 is(radio_group(-name   => 'game',
90                -labels => {'chess' => 'ping pong'}),
91    qq(<label><input type="radio" name="game" value="chess" checked="checked" tabindex="13" />ping pong</label> <label><input type="radio" name="game" value="checkers" tabindex="14" />checkers</label>),
92    'radio_group()');
93
94 is(checkbox_group(-name   => 'game',
95                   -Values => [qw/checkers chess cribbage/]),
96    qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" tabindex="15" />checkers</label> <label><input type="checkbox" name="game" value="chess" checked="checked" tabindex="16" />chess</label> <label><input type="checkbox" name="game" value="cribbage" tabindex="17" />cribbage</label>),
97    'checkbox_group()');
98
99 is(checkbox_group(-name       => 'game',
100                   '-values'   => [qw/checkers chess cribbage/],
101                   '-defaults' => ['cribbage'],
102                   -override=>1),
103    qq(<label><input type="checkbox" name="game" value="checkers" tabindex="18" />checkers</label> <label><input type="checkbox" name="game" value="chess" tabindex="19" />chess</label> <label><input type="checkbox" name="game" value="cribbage" checked="checked" tabindex="20" />cribbage</label>),
104    'checkbox_group()');
105
106 is(popup_menu(-name     => 'game',
107               '-values' => [qw/checkers chess cribbage/],
108               -default  => 'cribbage',
109               -override => 1),
110    '<select name="game" tabindex="21" >
111 <option value="checkers">checkers</option>
112 <option value="chess">chess</option>
113 <option selected="selected" value="cribbage">cribbage</option>
114 </select>',
115    'popup_menu()');
116 is(scrolling_list(-name => 'game',
117                   '-values' => [qw/checkers chess cribbage/],
118                   -default => 'cribbage',
119                   -override=>1),
120    '<select name="game" tabindex="22"  size="3">
121 <option value="checkers">checkers</option>
122 <option value="chess">chess</option>
123 <option selected="selected" value="cribbage">cribbage</option>
124 </select>',
125   'scrolling_list()');
126
127 is(checkbox_group(-name   => 'game',
128                   -Values => [qw/checkers chess cribbage/],
129                  -disabled => ['checkers']),
130    qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" tabindex="23" disabled='1'/><span style="color:gray">checkers</span></label> <label><input type="checkbox" name="game" value="chess" checked="checked" tabindex="24" />chess</label> <label><input type="checkbox" name="game" value="cribbage" tabindex="25" />cribbage</label>),
131    'checkbox_group()');
132
133 my $optgroup = optgroup(-name=>'optgroup_name',
134                         -Values => ['moe','catch'],
135                         -attributes=>{'catch'=>{'class'=>'red'}});
136
137 is($optgroup, 
138     qq(<optgroup label="optgroup_name">
139 <option value="moe">moe</option>
140 <option class="red" value="catch">catch</option>
141 </optgroup>),
142     'optgroup()');
143
144 is(popup_menu(-name=>'menu_name',
145               -Values=>[qw/eenie meenie minie/, $optgroup],
146               -labels=>{'eenie'=>'one',
147                         'meenie'=>'two',
148                         'minie'=>'three'},
149               -default=>'meenie'),
150     qq(<select name="menu_name" tabindex="26" >
151 <option value="eenie">one</option>
152 <option selected="selected" value="meenie">two</option>
153 <option value="minie">three</option>
154 <optgroup label="optgroup_name">
155 <option value="moe">moe</option>
156 <option class="red" value="catch">catch</option>
157 </optgroup>
158 </select>),
159     'popup_menu() + optgroup()');
160
161 is(scrolling_list(-name=>'menu_name',
162               -Values=>[qw/eenie meenie minie/, $optgroup],
163               -labels=>{'eenie'=>'one',
164                         'meenie'=>'two',
165                         'minie'=>'three'},
166               -default=>'meenie'),
167     qq(<select name="menu_name" tabindex="27"  size="4">
168 <option value="eenie">one</option>
169 <option selected="selected" value="meenie">two</option>
170 <option value="minie">three</option>
171 <optgroup label="optgroup_name">
172 <option value="moe">moe</option>
173 <option class="red" value="catch">catch</option>
174 </optgroup>
175 </select>),
176     'scrolling_list() + optgroup()');
177