use Tie::Array;
use Tie::Hash;
-use Tie::RefHash;
+use if !$ENV{PERL_CORE_MINITEST}, "Tie::RefHash";
# Predeclare vars used in the tests:
my @empty;
my %empty;
my @sparse; $sparse[2] = 2;
-my $deep1 = []; push @$deep1, \$deep1;
-my $deep2 = []; push @$deep2, \$deep2;
+my $deep1 = []; push @$deep1, $deep1;
+my $deep2 = []; push @$deep2, $deep2;
my @nums = (1..10);
tie my @tied_nums, 'Tie::StdArray';
our $obj = Test::Object::NoOverload->new;
our $str_obj = Test::Object::StringOverload->new;
-tie my %refh, 'Tie::RefHash';
-$refh{$ov_obj} = 1;
+my %refh;
+if (!$ENV{PERL_CORE_MINITEST}) {
+ tie %refh, 'Tie::RefHash';
+ $refh{$ov_obj} = 1;
+}
my @keyandmore = qw(key and more);
my @fooormore = qw(foo or more);
my %fooormore = map { $_ => 0 } @fooormore;
# Load and run the tests
-plan tests => 314;
+plan tests => 335;
while (<DATA>) {
+ SKIP: {
next if /^#/ || !/\S/;
chomp;
my ($yn, $left, $right, $note) = split /\t+/;
if ($note =~ /NOWARNINGS/) {
$res = eval "no warnings; $tstr";
}
+ elsif ($note =~ /MINISKIP/ && $ENV{PERL_CORE_MINITEST}) {
+ skip("Doesn't work with miniperl", $yn =~ /=/ ? 2 : 1);
+ }
else {
$res = eval $tstr;
}
$tstr = "$right ~~ $left";
goto test_again;
}
+ }
}
sub foo {}
= %hash %tied_hash
%tied_hash %tied_hash
!= {"a"=>"b"} %tied_hash
- $ov_obj %refh
-! "$ov_obj" %refh
- [$ov_obj] %refh
-! ["$ov_obj"] %refh
- %refh %refh
+ $ov_obj %refh MINISKIP
+! "$ov_obj" %refh MINISKIP
+ [$ov_obj] %refh MINISKIP
+! ["$ov_obj"] %refh MINISKIP
+ %refh %refh MINISKIP
# - an array ref
# (since this is symmetrical, tests as well hash~~array)
["foo", "bar"] [["foo"], ["bar"]]
! ["foo", "bar"] [qr/o/, "foo"]
["foo", undef, "bar"] [qr/o/, undef, "bar"]
- ["foo", undef, "bar"] [qr/o/, "", "bar"]
+! ["foo", undef, "bar"] [qr/o/, "", "bar"]
! ["foo", "", "bar"] [qr/o/, undef, "bar"]
$deep1 $deep1
@$deep1 @$deep1
! undef [1, 2, [undef], 4]
! undef @fooormore
undef @sparse
+ undef [undef]
+! 0 [undef]
+! "" [undef]
+! undef [0]
+! undef [""]
# - nested arrays and ~~ distributivity
11 [[11]]
! 2 3
0 FALSE
3-2 TRUE
- undef 0
+! undef 0
+! (my $u) 0
# Number against string
= 2 "2"
! 2 "2bananas"
!= 2_3 "2_3" NOWARNINGS
FALSE "0"
+! undef "0"
+! undef ""
# Regex against string
"x" qr/x/
@nums { 1, '', 2, '' }
@nums { 1, '', 12, '' }
! @nums { 11, '', 12, '' }
+
+# UNDEF
+! 3 undef
+! 1 undef
+! [] undef
+! {} undef
+! \%::main undef
+! [1,2] undef
+! %hash undef
+! @nums undef
+! "foo" undef
+! "" undef
+! !1 undef
+! \&foo undef
+! sub { } undef