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 => 19; 8 9 BEGIN { use_ok('CGI'); }; 10 use CGI (':standard','-no_debug','-tabindex'); 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 is(start_form(-action=>'foobar',-method=>'get'), 32 qq(<form method="get" action="foobar" enctype="multipart/form-data">\n), 33 "start_form()"); 34 35 is(submit(), 36 qq(<input type="submit" tabindex="1" name=".submit" />), 37 "submit()"); 38 39 is(submit(-name => 'foo', 40 -value => 'bar'), 41 qq(<input type="submit" tabindex="2" name="foo" value="bar" />), 42 "submit(-name,-value)"); 43 44 is(submit({-name => 'foo', 45 -value => 'bar'}), 46 qq(<input type="submit" tabindex="3" name="foo" value="bar" />), 47 "submit({-name,-value})"); 48 49 is(textfield(-name => 'weather'), 50 qq(<input type="text" name="weather" tabindex="4" value="dull" />), 51 "textfield({-name})"); 52 53 is(textfield(-name => 'weather', 54 -value => 'nice'), 55 qq(<input type="text" name="weather" tabindex="5" value="dull" />), 56 "textfield({-name,-value})"); 57 58 is(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 64 is(checkbox(-name => 'weather', 65 -value => 'nice'), 66 qq(<label><input type="checkbox" name="weather" value="nice" tabindex="7" />weather</label>), 67 "checkbox()"); 68 69 is(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 75 is(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 83 is(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 89 is(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 93 is(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 98 is(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 103 is(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 110 is(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()'); 120 is(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 131 is(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