xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/lib/CGI/t/form.t (revision 6287:9a1f5d2c8dd8)
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
5use lib qw(. ./blib/lib ./blib/arch);
6
7use Test::More tests => 19;
8
9BEGIN { use_ok('CGI'); };
10use CGI (':standard','-no_debug','-tabindex');
11
12my $CRLF = "\015\012";
13if ($^O eq 'VMS') {
14    $CRLF = "\n";  # via web server carriage is inserted automatically
15}
16if (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
31is(start_form(-action=>'foobar',-method=>'get'),
32   qq(<form method="get" action="foobar" enctype="multipart/form-data">\n),
33   "start_form()");
34
35is(submit(),
36   qq(<input type="submit" tabindex="1" name=".submit" />),
37   "submit()");
38
39is(submit(-name  => 'foo',
40	  -value => 'bar'),
41   qq(<input type="submit" tabindex="2" name="foo" value="bar" />),
42   "submit(-name,-value)");
43
44is(submit({-name  => 'foo',
45	   -value => 'bar'}),
46   qq(<input type="submit" tabindex="3" name="foo" value="bar" />),
47   "submit({-name,-value})");
48
49is(textfield(-name => 'weather'),
50   qq(<input type="text" name="weather" tabindex="4" value="dull" />),
51   "textfield({-name})");
52
53is(textfield(-name  => 'weather',
54	     -value => 'nice'),
55   qq(<input type="text" name="weather" tabindex="5" value="dull" />),
56   "textfield({-name,-value})");
57
58is(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
64is(checkbox(-name  => 'weather',
65	    -value => 'nice'),
66   qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>),
67   "checkbox()");
68
69is(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
75is(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
83is(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
89is(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
93is(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
98is(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
103is(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
110is(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()');
120is(scrolling_list(-name => 'game',
121		  '-values' => [qw/checkers chess cribbage/],
122		  -default => 'cribbage',
123		  -override=>1),
124   '<select name="game" tabindex="22"  size="3">
125<option value="checkers">checkers</option>
126<option value="chess">chess</option>
127<option selected="selected" value="cribbage">cribbage</option>
128</select>',
129  'scrolling_list()');
130
131is(checkbox_group(-name   => 'game',
132		  -Values => [qw/checkers chess cribbage/],
133		 -disabled => ['checkers']),
134   qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" tabindex="23" disabled='1'/><span style="color:gray">checkers</span></label> <label><input type="checkbox" name="game" value="chess" checked="checked" tabindex="24" />chess</label> <label><input type="checkbox" name="game" value="cribbage" tabindex="25" />cribbage</label>),
135   'checkbox_group()');
136
137