Home | History | Annotate | Download | only in t
      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