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