Move CGI.pm from lib to ext
[p5sagit/p5-mst-13.2.git] / ext / CGI / t / form.t
CommitLineData
6b4ac661 1#!/usr/local/bin/perl -w
424ec8fa 2
68a4c8b9 3use Test::More tests => 22;
424ec8fa 4
3ed077a9 5BEGIN { use_ok('CGI'); };
0a9bdad4 6use CGI (':standard','-no_debug','-tabindex');
424ec8fa 7
ba056755 8my $CRLF = "\015\012";
3ed077a9 9if ($^O eq 'VMS') {
ba056755 10 $CRLF = "\n"; # via web server carriage is inserted automatically
11}
12if (ord("\t") != 9) { # EBCDIC?
13 $CRLF = "\r\n";
14}
15
16
424ec8fa 17# Set up a CGI environment
3ed077a9 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';
424ec8fa 23$ENV{SERVER_PROTOCOL} = 'HTTP/1.0';
3ed077a9 24$ENV{SERVER_PORT} = 8080;
25$ENV{SERVER_NAME} = 'the.good.ship.lollypop.com';
26
27is(start_form(-action=>'foobar',-method=>'get'),
29ddc2a4 28 qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
3ed077a9 29 "start_form()");
30
31is(submit(),
70194bd6 32 qq(<input type="submit" tabindex="1" name=".submit" />),
3ed077a9 33 "submit()");
34
35is(submit(-name => 'foo',
36 -value => 'bar'),
70194bd6 37 qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
3ed077a9 38 "submit(-name,-value)");
39
40is(submit({-name => 'foo',
41 -value => 'bar'}),
70194bd6 42 qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
3ed077a9 43 "submit({-name,-value})");
44
45is(textfield(-name => 'weather'),
70194bd6 46 qq(<input type="text" name="weather" tabindex="4" value="dull" />),
3ed077a9 47 "textfield({-name})");
48
49is(textfield(-name => 'weather',
50 -value => 'nice'),
70194bd6 51 qq(<input type="text" name="weather" tabindex="5" value="dull" />),
3ed077a9 52 "textfield({-name,-value})");
53
54is(textfield(-name => 'weather',
55 -value => 'nice',
56 -override => 1),
70194bd6 57 qq(<input type="text" name="weather" tabindex="6" value="nice" />),
3ed077a9 58 "textfield({-name,-value,-override})");
59
60is(checkbox(-name => 'weather',
61 -value => 'nice'),
70194bd6 62 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
3ed077a9 63 "checkbox()");
64
65is(checkbox(-name => 'weather',
66 -value => 'nice',
67 -label => 'forecast'),
70194bd6 68 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" />forecast</label>),
3ed077a9 69 "checkbox()");
70
71is(checkbox(-name => 'weather',
72 -value => 'nice',
73 -label => 'forecast',
74 -checked => 1,
75 -override => 1),
70194bd6 76 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="9" checked="checked" />forecast</label>),
3ed077a9 77 "checkbox()");
78
79is(checkbox(-name => 'weather',
80 -value => 'dull',
81 -label => 'forecast'),
70194bd6 82 qq(<label><input type="checkbox" name="weather" value="dull" tabindex="10" checked="checked" />forecast</label>),
3ed077a9 83 "checkbox()");
84
85is(radio_group(-name => 'game'),
70194bd6 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>),
3ed077a9 87 'radio_group()');
88
89is(radio_group(-name => 'game',
90 -labels => {'chess' => 'ping pong'}),
70194bd6 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>),
3ed077a9 92 'radio_group()');
93
94is(checkbox_group(-name => 'game',
95 -Values => [qw/checkers chess cribbage/]),
70194bd6 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>),
3ed077a9 97 'checkbox_group()');
98
99is(checkbox_group(-name => 'game',
100 '-values' => [qw/checkers chess cribbage/],
29ddc2a4 101 '-defaults' => ['cribbage'],
102 -override=>1),
70194bd6 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>),
3ed077a9 104 'checkbox_group()');
105
106is(popup_menu(-name => 'game',
107 '-values' => [qw/checkers chess cribbage/],
108 -default => 'cribbage',
29ddc2a4 109 -override => 1),
0a9bdad4 110 '<select name="game" tabindex="21" >
2371fea9 111<option value="checkers">checkers</option>
112<option value="chess">chess</option>
113<option selected="selected" value="cribbage">cribbage</option>
29ddc2a4 114</select>',
115 'popup_menu()');
1f426928 116is(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()');
8869a4b7 126
127is(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
68a4c8b9 133my $optgroup = optgroup(-name=>'optgroup_name',
134 -Values => ['moe','catch'],
135 -attributes=>{'catch'=>{'class'=>'red'}});
136
137is($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
144is(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
161is(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