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