1 2sub ntest ($$$) { 3 my $ret = 1; 4 if ($_[1] != $_[2]) { 5 printf "#$_[0]: expecting $_[1]\n"; 6 printf "#$_[0]: got $_[2]\n"; 7 printf "#line %d %s\n",(caller)[2,1]; 8 print "not "; 9 $ret = 0; 10 } 11 print "ok $_[0]\n"; 12 $ret; 13} 14 15sub stest ($$$) { 16 my $ret = 1; 17 unless (defined $_[2] && $_[1] eq $_[2]) { 18 printf "#$_[0]: expecting %s\n", $_[1] =~ /[^\.\d\w]/ ? "hex:".unpack("H*",$_[1]) : $_[1]; 19 printf "#$_[0]: got %s\n", defined($_[2]) ? $_[2] =~ /[^\.\d\w]/ ? "hex:".unpack("H*",$_[2]) : $_[2] : 'undef'; 20 printf "#line %d %s\n",(caller)[2,1]; 21 print "not "; 22 $ret = 0; 23 } 24 print "ok $_[0]\n"; 25 $ret; 26} 27 28sub btest ($$) { 29 unless ($_[1]) { 30 printf "#line %d %s\n",(caller)[2,1]; 31 print "not "; 32 } 33 print "ok $_[0]\n"; 34 $_[1] 35} 36 37 38sub rtest ($$$) { 39 unless (eval { require Data::Dumper } ) { 40 print "ok $_[0] # skip need Data::Dumper\n"; 41 return; 42 } 43 44 local $Data::Dumper::Sortkeys = 1; 45 local $Data::Dumper::Useqq = 1; 46 my $expect = Data::Dumper::Dumper($_[1]); 47 my $got = Data::Dumper::Dumper($_[2]); 48 my $ok = $expect eq $got; 49 50 unless ($ok) { 51 printf "#$_[0]: expecting %s\n", $expect; 52 printf "#$_[0]: got %s\n", $got; 53 printf "#line %d %s\n",(caller)[2,1]; 54 print "not "; 55 } 56 print "ok $_[0]\n"; 57 $ok; 58} 59 601; 61 62