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