use strict; use warnings; use t::std; { check_test( sub { cmp_deeply("a", "a", "scalar eq"); }, { name => "scalar eq", actual_ok => 1, diag => "", } ); check_test( sub { cmp_deeply("a", "b", "scalar not eq"); }, { name => "scalar not eq", actual_ok => 0, diag => <<EOM, Compared \$data got : 'a' expect : 'b' EOM } ); check_test( sub { cmp_deeply("a", undef, "def undef"); }, { name => "def undef", actual_ok => 0, diag => <<EOM, Compared \$data got : 'a' expect : undef EOM } ); check_test( sub { cmp_deeply(undef, "a", "undef def"); }, { name => "undef def", actual_ok => 0, diag => <<EOM, Compared \$data got : undef expect : 'a' EOM } ); check_test( sub { cmp_deeply(undef, undef, "undef undef"); }, { name => "undef undef", actual_ok => 1, diag => '', } ); check_test( sub { cmp_deeply("", undef); }, { actual_ok => 0, diag => <<EOM, Compared \$data got : '' expect : undef EOM }, "scalar undef and blank" ); } { check_test( sub { cmp_deeply(\\"a", \\"a", "ref ref eq"); }, { name => "ref ref eq", actual_ok => 1, diag => "", } ); check_test( sub { cmp_deeply(\\"a", \\"b", "ref ref not eq"); }, { name => "ref ref not eq", actual_ok => 0, diag => <<EOM, Compared \${\${\$data}} got : 'a' expect : 'b' EOM } ); } { my @a; check_test( sub { cmp_deeply(\@a, \@a); }, { actual_ok => 1, diag => "", }, "equal refs" ); } { my @a; check_test( sub { cmp_deeply(undef, \@a); }, { actual_ok => 0, }, "not calling StrVal on undef" ); }