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 5 use lib qw(. ./blib/lib ./blib/arch); 6 7 use Test::More tests => 18; 8 9 BEGIN { use_ok('CGI'); }; 10 use CGI (':standard','-no_debug'); 11 12 my $CRLF = "\015\012"; 13 if ($^O eq 'VMS') { 14 $CRLF = "\n"; # via web server carriage is inserted automatically 15 } 16 if (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 31 ok( (not $CGI::TABINDEX), "Tab index turned off."); 32 33 is(submit(), 34 qq(<input type="submit" name=".submit" />), 35 "submit()"); 36 37 is(submit(-name => 'foo', 38 -value => 'bar'), 39 qq(<input type="submit" name="foo" value="bar" />), 40 "submit(-name,-value)"); 41 42 is(submit({-name => 'foo', 43 -value => 'bar'}), 44 qq(<input type="submit" name="foo" value="bar" />), 45 "submit({-name,-value})"); 46 47 is(textfield(-name => 'weather'), 48 qq(<input type="text" name="weather" value="dull" />), 49 "textfield({-name})"); 50 51 is(textfield(-name => 'weather', 52 -value => 'nice'), 53 qq(<input type="text" name="weather" value="dull" />), 54 "textfield({-name,-value})"); 55 56 is(textfield(-name => 'weather', 57 -value => 'nice', 58 -override => 1), 59 qq(<input type="text" name="weather" value="nice" />), 60 "textfield({-name,-value,-override})"); 61 62 is(checkbox(-name => 'weather', 63 -value => 'nice'), 64 qq(<label><input type="checkbox" name="weather" value="nice" />weather</label>), 65 "checkbox()"); 66 67 is(checkbox(-name => 'weather', 68 -value => 'nice', 69 -label => 'forecast'), 70 qq(<label><input type="checkbox" name="weather" value="nice" />forecast</label>), 71 "checkbox()"); 72 73 is(checkbox(-name => 'weather', 74 -value => 'nice', 75 -label => 'forecast', 76 -checked => 1, 77 -override => 1), 78 qq(<label><input type="checkbox" name="weather" value="nice" checked="checked" />forecast</label>), 79 "checkbox()"); 80 81 is(checkbox(-name => 'weather', 82 -value => 'dull', 83 -label => 'forecast'), 84 qq(<label><input type="checkbox" name="weather" value="dull" checked="checked" />forecast</label>), 85 "checkbox()"); 86 87 is(radio_group(-name => 'game'), 88 qq(<label><input type="radio" name="game" value="chess" checked="checked" />chess</label> <label><input type="radio" name="game" value="checkers" />checkers</label>), 89 'radio_group()'); 90 91 is(radio_group(-name => 'game', 92 -labels => {'chess' => 'ping pong'}), 93 qq(<label><input type="radio" name="game" value="chess" checked="checked" />ping pong</label> <label><input type="radio" name="game" value="checkers" />checkers</label>), 94 'radio_group()'); 95 96 is(checkbox_group(-name => 'game', 97 -Values => [qw/checkers chess cribbage/]), 98 qq(<label><input type="checkbox" name="game" value="checkers" checked="checked" />checkers</label> <label><input type="checkbox" name="game" value="chess" checked="checked" />chess</label> <label><input type="checkbox" name="game" value="cribbage" />cribbage</label>), 99 'checkbox_group()'); 100 101 is(checkbox_group(-name => 'game', 102 '-values' => [qw/checkers chess cribbage/], 103 '-defaults' => ['cribbage'], 104 -override=>1), 105 qq(<label><input type="checkbox" name="game" value="checkers" />checkers</label> <label><input type="checkbox" name="game" value="chess" />chess</label> <label><input type="checkbox" name="game" value="cribbage" checked="checked" />cribbage</label>), 106 'checkbox_group()'); 107 108 is(popup_menu(-name => 'game', 109 '-values' => [qw/checkers chess cribbage/], 110 -default => 'cribbage', 111 -override => 1), 112 '<select name="game" > 113 <option value="checkers">checkers</option> 114 <option value="chess">chess</option> 115 <option selected="selected" value="cribbage">cribbage</option> 116 </select>', 117 'popup_menu()'); 118 119 120 is(textarea(-name=>'foo', 121 -default=>'starting value', 122 -rows=>10, 123 -columns=>50), 124 '<textarea name="foo" rows="10" cols="50">starting value</textarea>', 125 'textarea()'); 126 127