Commit | Line | Data |
6b4ac661 |
1 | #!/usr/local/bin/perl -w |
424ec8fa |
2 | |
68a4c8b9 |
3 | use Test::More tests => 22; |
424ec8fa |
4 | |
3ed077a9 |
5 | BEGIN { use_ok('CGI'); }; |
0a9bdad4 |
6 | use CGI (':standard','-no_debug','-tabindex'); |
424ec8fa |
7 | |
ba056755 |
8 | my $CRLF = "\015\012"; |
3ed077a9 |
9 | if ($^O eq 'VMS') { |
ba056755 |
10 | $CRLF = "\n"; # via web server carriage is inserted automatically |
11 | } |
12 | if (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 | |
27 | is(start_form(-action=>'foobar',-method=>'get'), |
29ddc2a4 |
28 | qq(<form method="get" action="foobar" enctype="multipart/form-data">\n), |
3ed077a9 |
29 | "start_form()"); |
30 | |
31 | is(submit(), |
70194bd6 |
32 | qq(<input type="submit" tabindex="1" name=".submit" />), |
3ed077a9 |
33 | "submit()"); |
34 | |
35 | is(submit(-name => 'foo', |
36 | -value => 'bar'), |
70194bd6 |
37 | qq(<input type="submit" tabindex="2" name="foo" value="bar" />), |
3ed077a9 |
38 | "submit(-name,-value)"); |
39 | |
40 | is(submit({-name => 'foo', |
41 | -value => 'bar'}), |
70194bd6 |
42 | qq(<input type="submit" tabindex="3" name="foo" value="bar" />), |
3ed077a9 |
43 | "submit({-name,-value})"); |
44 | |
45 | is(textfield(-name => 'weather'), |
70194bd6 |
46 | qq(<input type="text" name="weather" tabindex="4" value="dull" />), |
3ed077a9 |
47 | "textfield({-name})"); |
48 | |
49 | is(textfield(-name => 'weather', |
50 | -value => 'nice'), |
70194bd6 |
51 | qq(<input type="text" name="weather" tabindex="5" value="dull" />), |
3ed077a9 |
52 | "textfield({-name,-value})"); |
53 | |
54 | is(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 | |
60 | is(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 | |
65 | is(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 | |
71 | is(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 | |
79 | is(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 | |
85 | is(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 | |
89 | is(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 | |
94 | is(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 | |
99 | is(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 | |
106 | is(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 |
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()'); |
8869a4b7 |
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 | |
68a4c8b9 |
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 | |