+my $test = 1;
+
+sub _ok {
+ my ($type, $got, $expected, $name) = @_;
+
+ my $result;
+ if ($type eq 'is') {
+ $result = $got eq $expected;
+ } elsif ($type eq 'isnt') {
+ $result = $got ne $expected;
+ } elsif ($type eq 'like') {
+ $result = $got =~ $expected;
+ } else {
+ die "Unexpected type '$type'$name";
+ }
+ if ($result) {
+ if ($name) {
+ print "ok $test - $name\n";
+ } else {
+ print "ok $test\n";
+ }
+ } else {
+ if ($name) {
+ print "not ok $test - $name\n";
+ } else {
+ print "not ok $test\n";
+ }
+ my @caller = caller(2);
+ print "# Failed test at $caller[1] line $caller[2]\n";
+ print "# Got '$got'\n";
+ if ($type eq 'is') {
+ print "# Expected '$expected'\n";
+ } elsif ($type eq 'isnt') {
+ print "# Expected not '$expected'\n";
+ } elsif ($type eq 'like') {
+ print "# Expected $expected\n";
+ }
+ }
+ $test = $test + 1;
+ $result;