1 #!/usr/local/bin/perl -w
3 use Test::More tests => 22;
5 BEGIN { use_ok('CGI'); };
6 use CGI (':standard','-no_debug','-tabindex');
10 $CRLF = "\n"; # via web server carriage is inserted automatically
12 if (ord("\t") != 9) { # EBCDIC?
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';
27 is(start_form(-action=>'foobar',-method=>'get'),
28 qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
32 qq(<input type="submit" tabindex="1" name=".submit" />),
35 is(submit(-name => 'foo',
37 qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
38 "submit(-name,-value)");
40 is(submit({-name => 'foo',
42 qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
43 "submit({-name,-value})");
45 is(textfield(-name => 'weather'),
46 qq(<input type="text" name="weather" tabindex="4" value="dull" />),
47 "textfield({-name})");
49 is(textfield(-name => 'weather',
51 qq(<input type="text" name="weather" tabindex="5" value="dull" />),
52 "textfield({-name,-value})");
54 is(textfield(-name => 'weather',
57 qq(<input type="text" name="weather" tabindex="6" value="nice" />),
58 "textfield({-name,-value,-override})");
60 is(checkbox(-name => 'weather',
62 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
65 is(checkbox(-name => 'weather',
67 -label => 'forecast'),
68 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" />forecast</label>),
71 is(checkbox(-name => 'weather',
76 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="9" checked="checked" />forecast</label>),
79 is(checkbox(-name => 'weather',
81 -label => 'forecast'),
82 qq(<label><input type="checkbox" name="weather" value="dull" tabindex="10" checked="checked" />forecast</label>),
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>),
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>),
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>),
99 is(checkbox_group(-name => 'game',
100 '-values' => [qw/checkers chess cribbage/],
101 '-defaults' => ['cribbage'],
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>),
106 is(popup_menu(-name => 'game',
107 '-values' => [qw/checkers chess cribbage/],
108 -default => 'cribbage',
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>
116 is(scrolling_list(-name => 'game',
117 '-values' => [qw/checkers chess cribbage/],
118 -default => 'cribbage',
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>
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>),
133 my $optgroup = optgroup(-name=>'optgroup_name',
134 -Values => ['moe','catch'],
135 -attributes=>{'catch'=>{'class'=>'red'}});
138 qq(<optgroup label="optgroup_name">
139 <option value="moe">moe</option>
140 <option class="red" value="catch">catch</option>
144 is(popup_menu(-name=>'menu_name',
145 -Values=>[qw/eenie meenie minie/, $optgroup],
146 -labels=>{'eenie'=>'one',
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>
159 'popup_menu() + optgroup()');
161 is(scrolling_list(-name=>'menu_name',
162 -Values=>[qw/eenie meenie minie/, $optgroup],
163 -labels=>{'eenie'=>'one',
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>
176 'scrolling_list() + optgroup()');