1 #!/usr/local/bin/perl -w
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
7 use lib qw(blib/lib blib/arch);
9 use Test::More tests => 17;
11 BEGIN { use_ok('CGI'); };
12 use CGI (':standard','-no_debug');
14 my $CRLF = "\015\012";
16 $CRLF = "\n"; # via web server carriage is inserted automatically
18 if (ord("\t") != 9) { # EBCDIC?
23 # Set up a CGI environment
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';
29 $ENV{SERVER_PROTOCOL} = 'HTTP/1.0';
30 $ENV{SERVER_PORT} = 8080;
31 $ENV{SERVER_NAME} = 'the.good.ship.lollypop.com';
33 is(start_form(-action=>'foobar',-method=>'get'),
34 qq(<form method="get" action="foobar" enctype="application/x-www-form-urlencoded">\n),
38 qq(<input type="submit" name=".submit" />),
41 is(submit(-name => 'foo',
43 qq(<input type="submit" name="foo" value="bar" />),
44 "submit(-name,-value)");
46 is(submit({-name => 'foo',
48 qq(<input type="submit" name="foo" value="bar" />),
49 "submit({-name,-value})");
51 is(textfield(-name => 'weather'),
52 qq(<input type="text" name="weather" value="dull" />),
53 "textfield({-name})");
55 is(textfield(-name => 'weather',
57 qq(<input type="text" name="weather" value="dull" />),
58 "textfield({-name,-value})");
60 is(textfield(-name => 'weather',
63 qq(<input type="text" name="weather" value="nice" />),
64 "textfield({-name,-value,-override})");
66 is(checkbox(-name => 'weather',
68 qq(<input type="checkbox" name="weather" value="nice" />weather),
71 is(checkbox(-name => 'weather',
73 -label => 'forecast'),
74 qq(<input type="checkbox" name="weather" value="nice" />forecast),
77 is(checkbox(-name => 'weather',
82 qq(<input type="checkbox" name="weather" value="nice" checked="1" />forecast),
85 is(checkbox(-name => 'weather',
87 -label => 'forecast'),
88 qq(<input type="checkbox" name="weather" value="dull" checked="1" />forecast),
91 is(radio_group(-name => 'game'),
92 qq(<input type="radio" name="game" value="chess" checked="1" />chess ).
93 qq(<input type="radio" name="game" value="checkers" />checkers),
96 is(radio_group(-name => 'game',
97 -labels => {'chess' => 'ping pong'}),
98 qq(<input type="radio" name="game" value="chess" checked="1" />ping pong ).
99 qq(<input type="radio" name="game" value="checkers" />checkers),
102 is(checkbox_group(-name => 'game',
103 -Values => [qw/checkers chess cribbage/]),
104 qq(<input type="checkbox" name="game" value="checkers" checked="1" />checkers ).
105 qq(<input type="checkbox" name="game" value="chess" checked="1" />chess ).
106 qq(<input type="checkbox" name="game" value="cribbage" />cribbage),
109 is(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 ).
114 qq(<input type="checkbox" name="game" value="cribbage" checked="1" />cribbage),
117 is(popup_menu(-name => 'game',
118 '-values' => [qw/checkers chess cribbage/],
119 -default => 'cribbage',
120 -override => 1)."\n",
121 <<END, 'checkbox_group()');
123 <option value="checkers">checkers</option>
124 <option value="chess">chess</option>
125 <option selected="1" value="cribbage">cribbage</option>