Upgrade to CGI.pm-3.13
[p5sagit/p5-mst-13.2.git] / lib / CGI / t / form.t
1 #!/usr/local/bin/perl -w
2
3 # Due to a bug in older versions of MakeMaker & Test::Harness, we must
4 # ensure the blib's are in @INC, else we might use the core CGI.pm
5 use lib qw(. ./blib/lib ./blib/arch);
6
7 use Test::More tests => 17;
8
9 BEGIN { use_ok('CGI'); };
10 use CGI (':standard','-no_debug','-tabindex');
11
12 my $CRLF = "\015\012";
13 if ($^O eq 'VMS') {
14     $CRLF = "\n";  # via web server carriage is inserted automatically
15 }
16 if (ord("\t") != 9) { # EBCDIC?
17     $CRLF = "\r\n";
18 }
19
20
21 # Set up a CGI environment
22 $ENV{REQUEST_METHOD}  = 'GET';
23 $ENV{QUERY_STRING}    = 'game=chess&game=checkers&weather=dull';
24 $ENV{PATH_INFO}       = '/somewhere/else';
25 $ENV{PATH_TRANSLATED} = '/usr/local/somewhere/else';
26 $ENV{SCRIPT_NAME}     ='/cgi-bin/foo.cgi';
27 $ENV{SERVER_PROTOCOL} = 'HTTP/1.0';
28 $ENV{SERVER_PORT}     = 8080;
29 $ENV{SERVER_NAME}     = 'the.good.ship.lollypop.com';
30
31 is(start_form(-action=>'foobar',-method=>'get'),
32    qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
33    "start_form()");
34
35 is(submit(),
36    qq(<input type="submit" tabindex="1" name=".submit" />),
37    "submit()");
38
39 is(submit(-name  => 'foo',
40           -value => 'bar'),
41    qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
42    "submit(-name,-value)");
43
44 is(submit({-name  => 'foo',
45            -value => 'bar'}),
46    qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
47    "submit({-name,-value})");
48
49 is(textfield(-name => 'weather'),
50    qq(<input type="text" name="weather" tabindex="4" value="dull" />),
51    "textfield({-name})");
52
53 is(textfield(-name  => 'weather',
54              -value => 'nice'),
55    qq(<input type="text" name="weather" tabindex="5" value="dull" />),
56    "textfield({-name,-value})");
57
58 is(textfield(-name     => 'weather',
59              -value    => 'nice',
60              -override => 1),
61    qq(<input type="text" name="weather" tabindex="6" value="nice" />),
62    "textfield({-name,-value,-override})");
63
64 is(checkbox(-name  => 'weather',
65             -value => 'nice'),
66    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
67    "checkbox()");
68
69 is(checkbox(-name  => 'weather',
70             -value => 'nice',
71             -label => 'forecast'),
72    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="8" />forecast</label>),
73    "checkbox()");
74
75 is(checkbox(-name     => 'weather',
76             -value    => 'nice',
77             -label    => 'forecast',
78             -checked  => 1,
79             -override => 1),
80    qq(<label><input type="checkbox" name="weather" value="nice" tabindex="9" checked="checked" />forecast</label>),
81    "checkbox()");
82
83 is(checkbox(-name  => 'weather',
84             -value => 'dull',
85             -label => 'forecast'),
86    qq(<label><input type="checkbox" name="weather" value="dull" tabindex="10" checked="checked" />forecast</label>),
87    "checkbox()");
88
89 is(radio_group(-name => 'game'),
90    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>),
91    'radio_group()');
92
93 is(radio_group(-name   => 'game',
94                -labels => {'chess' => 'ping pong'}),
95    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>),
96    'radio_group()');
97
98 is(checkbox_group(-name   => 'game',
99                   -Values => [qw/checkers chess cribbage/]),
100    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>),
101    'checkbox_group()');
102
103 is(checkbox_group(-name       => 'game',
104                   '-values'   => [qw/checkers chess cribbage/],
105                   '-defaults' => ['cribbage'],
106                   -override=>1),
107    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>),
108    'checkbox_group()');
109
110 is(popup_menu(-name     => 'game',
111               '-values' => [qw/checkers chess cribbage/],
112               -default  => 'cribbage',
113               -override => 1),
114    '<select name="game" tabindex="21" >
115 <option value="checkers">checkers</option>
116 <option value="chess">chess</option>
117 <option selected="selected" value="cribbage">cribbage</option>
118 </select>',
119    'popup_menu()');