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