use strict; use warnings; use t::std; { check_tests( sub { cmp_deeply({}, hashkeys(), "0"); cmp_deeply({1 => 2, 3 => 4, 5 => 6}, hashkeys(1, 3, 5), "3"); }, [ { name => "0", actual_ok => 1, diag => "", }, { name => "3", actual_ok => 1, diag => "", } ], "keys ok" ); check_tests( sub { cmp_deeply({a => 2, b => 4}, hashkeys("a", "c")); }, [ { actual_ok => 0, diag => <<EOM, Comparing hash keys of \$data Missing: 'c' Extra: 'b' EOM }, ], "bad length" ); check_tests( sub { cmp_deeply("a", hashkeys(1), "string"); cmp_deeply([], hashkeys(1), "array"); }, [ { name => "string", actual_ok => 0, diag => <<EOM, Compared reftype(\$data) got : undef expect : 'HASH' EOM }, { name => "array", actual_ok => 0, diag => <<EOM, Compared reftype(\$data) got : 'ARRAY' expect : 'HASH' EOM }, ], "not array" ); }