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