xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/is_deeply_fail.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
15759b3d2Safresh1#!/usr/bin/perl -w
25759b3d2Safresh1
35759b3d2Safresh1BEGIN {
45759b3d2Safresh1    if( $ENV{PERL_CORE} ) {
55759b3d2Safresh1        chdir 't';
65759b3d2Safresh1        @INC = ('../lib', 'lib');
75759b3d2Safresh1    }
85759b3d2Safresh1    else {
95759b3d2Safresh1        unshift @INC, 't/lib';
105759b3d2Safresh1    }
115759b3d2Safresh1}
125759b3d2Safresh1
135759b3d2Safresh1use strict;
14256a93a4Safresh1use warnings;
155759b3d2Safresh1
165759b3d2Safresh1use Test::Builder;
175759b3d2Safresh1require Test::Simple::Catch;
185759b3d2Safresh1my($out, $err) = Test::Simple::Catch::caught();
195759b3d2Safresh1Test::Builder->new->no_header(1);
205759b3d2Safresh1Test::Builder->new->no_ending(1);
215759b3d2Safresh1local $ENV{HARNESS_ACTIVE} = 0;
225759b3d2Safresh1
235759b3d2Safresh1
245759b3d2Safresh1# Can't use Test.pm, that's a 5.005 thing.
255759b3d2Safresh1package main;
265759b3d2Safresh1
275759b3d2Safresh1
285759b3d2Safresh1my $TB = Test::Builder->create;
29*5486feefSafresh1$TB->plan(tests => 110);
305759b3d2Safresh1
315759b3d2Safresh1# Utility testing functions.
325759b3d2Safresh1sub ok ($;$) {
335759b3d2Safresh1    return $TB->ok(@_);
345759b3d2Safresh1}
355759b3d2Safresh1
365759b3d2Safresh1sub is ($$;$) {
375759b3d2Safresh1    my($thing, $that, $name) = @_;
385759b3d2Safresh1
395759b3d2Safresh1    my $ok = $TB->is_eq($$thing, $that, $name);
405759b3d2Safresh1
415759b3d2Safresh1    $$thing = '';
425759b3d2Safresh1
435759b3d2Safresh1    return $ok;
445759b3d2Safresh1}
455759b3d2Safresh1
465759b3d2Safresh1sub like ($$;$) {
475759b3d2Safresh1    my($thing, $regex, $name) = @_;
485759b3d2Safresh1    $regex = "/$regex/" if !ref $regex and $regex !~ m{^/.*/$}s;
495759b3d2Safresh1
505759b3d2Safresh1    my $ok = $TB->like($$thing, $regex, $name);
515759b3d2Safresh1
525759b3d2Safresh1    $$thing = '';
535759b3d2Safresh1
545759b3d2Safresh1    return $ok;
555759b3d2Safresh1}
565759b3d2Safresh1
575759b3d2Safresh1
585759b3d2Safresh1require Test::More;
595759b3d2Safresh1Test::More->import(tests => 11, import => ['is_deeply']);
605759b3d2Safresh1
615759b3d2Safresh1my $Filename = quotemeta $0;
625759b3d2Safresh1
635759b3d2Safresh1#line 68
645759b3d2Safresh1ok !is_deeply('foo', 'bar', 'plain strings');
655759b3d2Safresh1is( $out, "not ok 1 - plain strings\n",     'plain strings' );
665759b3d2Safresh1is( $err, <<ERR,                            '    right diagnostic' );
675759b3d2Safresh1#   Failed test 'plain strings'
685759b3d2Safresh1#   at $0 line 68.
695759b3d2Safresh1#          got: 'foo'
705759b3d2Safresh1#     expected: 'bar'
715759b3d2Safresh1ERR
725759b3d2Safresh1
735759b3d2Safresh1
745759b3d2Safresh1#line 78
755759b3d2Safresh1ok !is_deeply({}, [], 'different types');
765759b3d2Safresh1is( $out, "not ok 2 - different types\n",   'different types' );
775759b3d2Safresh1like( $err, <<ERR,                          '   right diagnostic' );
785759b3d2Safresh1#   Failed test 'different types'
795759b3d2Safresh1#   at $Filename line 78.
805759b3d2Safresh1#     Structures begin differing at:
815759b3d2Safresh1#          \\\$got = HASH\\(0x[0-9a-f]+\\)
825759b3d2Safresh1#     \\\$expected = ARRAY\\(0x[0-9a-f]+\\)
835759b3d2Safresh1ERR
845759b3d2Safresh1
855759b3d2Safresh1#line 88
865759b3d2Safresh1ok !is_deeply({ this => 42 }, { this => 43 }, 'hashes with different values');
875759b3d2Safresh1is( $out, "not ok 3 - hashes with different values\n",
885759b3d2Safresh1                                        'hashes with different values' );
895759b3d2Safresh1is( $err, <<ERR,                        '   right diagnostic' );
905759b3d2Safresh1#   Failed test 'hashes with different values'
915759b3d2Safresh1#   at $0 line 88.
925759b3d2Safresh1#     Structures begin differing at:
935759b3d2Safresh1#          \$got->{this} = '42'
945759b3d2Safresh1#     \$expected->{this} = '43'
955759b3d2Safresh1ERR
965759b3d2Safresh1
975759b3d2Safresh1#line 99
985759b3d2Safresh1ok !is_deeply({ that => 42 }, { this => 42 }, 'hashes with different keys');
995759b3d2Safresh1is( $out, "not ok 4 - hashes with different keys\n",
1005759b3d2Safresh1                                        'hashes with different keys' );
1015759b3d2Safresh1is( $err, <<ERR,                        '    right diagnostic' );
1025759b3d2Safresh1#   Failed test 'hashes with different keys'
1035759b3d2Safresh1#   at $0 line 99.
1045759b3d2Safresh1#     Structures begin differing at:
1055759b3d2Safresh1#          \$got->{this} = Does not exist
1065759b3d2Safresh1#     \$expected->{this} = '42'
1075759b3d2Safresh1ERR
1085759b3d2Safresh1
1095759b3d2Safresh1#line 110
1105759b3d2Safresh1ok !is_deeply([1..9], [1..10],    'arrays of different length');
1115759b3d2Safresh1is( $out, "not ok 5 - arrays of different length\n",
1125759b3d2Safresh1                                        'arrays of different length' );
1135759b3d2Safresh1is( $err, <<ERR,                        '    right diagnostic' );
1145759b3d2Safresh1#   Failed test 'arrays of different length'
1155759b3d2Safresh1#   at $0 line 110.
1165759b3d2Safresh1#     Structures begin differing at:
1175759b3d2Safresh1#          \$got->[9] = Does not exist
1185759b3d2Safresh1#     \$expected->[9] = '10'
1195759b3d2Safresh1ERR
1205759b3d2Safresh1
1215759b3d2Safresh1#line 121
1225759b3d2Safresh1ok !is_deeply([undef, undef], [undef], 'arrays of undefs' );
1235759b3d2Safresh1is( $out, "not ok 6 - arrays of undefs\n",  'arrays of undefs' );
1245759b3d2Safresh1is( $err, <<ERR,                            '    right diagnostic' );
1255759b3d2Safresh1#   Failed test 'arrays of undefs'
1265759b3d2Safresh1#   at $0 line 121.
1275759b3d2Safresh1#     Structures begin differing at:
1285759b3d2Safresh1#          \$got->[1] = undef
1295759b3d2Safresh1#     \$expected->[1] = Does not exist
1305759b3d2Safresh1ERR
1315759b3d2Safresh1
1325759b3d2Safresh1#line 131
1335759b3d2Safresh1ok !is_deeply({ foo => undef }, {},    'hashes of undefs' );
1345759b3d2Safresh1is( $out, "not ok 7 - hashes of undefs\n",  'hashes of undefs' );
1355759b3d2Safresh1is( $err, <<ERR,                            '    right diagnostic' );
1365759b3d2Safresh1#   Failed test 'hashes of undefs'
1375759b3d2Safresh1#   at $0 line 131.
1385759b3d2Safresh1#     Structures begin differing at:
1395759b3d2Safresh1#          \$got->{foo} = undef
1405759b3d2Safresh1#     \$expected->{foo} = Does not exist
1415759b3d2Safresh1ERR
1425759b3d2Safresh1
1435759b3d2Safresh1#line 141
1445759b3d2Safresh1ok !is_deeply(\42, \23,   'scalar refs');
1455759b3d2Safresh1is( $out, "not ok 8 - scalar refs\n",   'scalar refs' );
1465759b3d2Safresh1is( $err, <<ERR,                        '    right diagnostic' );
1475759b3d2Safresh1#   Failed test 'scalar refs'
1485759b3d2Safresh1#   at $0 line 141.
1495759b3d2Safresh1#     Structures begin differing at:
1505759b3d2Safresh1#     \${     \$got} = '42'
1515759b3d2Safresh1#     \${\$expected} = '23'
1525759b3d2Safresh1ERR
1535759b3d2Safresh1
1545759b3d2Safresh1#line 151
1555759b3d2Safresh1ok !is_deeply([], \23,    'mixed scalar and array refs');
1565759b3d2Safresh1is( $out, "not ok 9 - mixed scalar and array refs\n",
1575759b3d2Safresh1                                        'mixed scalar and array refs' );
1585759b3d2Safresh1like( $err, <<ERR,                      '    right diagnostic' );
1595759b3d2Safresh1#   Failed test 'mixed scalar and array refs'
1605759b3d2Safresh1#   at $Filename line 151.
1615759b3d2Safresh1#     Structures begin differing at:
1625759b3d2Safresh1#          \\\$got = ARRAY\\(0x[0-9a-f]+\\)
1635759b3d2Safresh1#     \\\$expected = SCALAR\\(0x[0-9a-f]+\\)
1645759b3d2Safresh1ERR
1655759b3d2Safresh1
1665759b3d2Safresh1
1675759b3d2Safresh1my($a1, $a2, $a3);
1685759b3d2Safresh1$a1 = \$a2;  $a2 = \$a3;
1695759b3d2Safresh1$a3 = 42;
1705759b3d2Safresh1
1715759b3d2Safresh1my($b1, $b2, $b3);
1725759b3d2Safresh1$b1 = \$b2;  $b2 = \$b3;
1735759b3d2Safresh1$b3 = 23;
1745759b3d2Safresh1
1755759b3d2Safresh1#line 173
1765759b3d2Safresh1ok !is_deeply($a1, $b1, 'deep scalar refs');
1775759b3d2Safresh1is( $out, "not ok 10 - deep scalar refs\n",     'deep scalar refs' );
1785759b3d2Safresh1is( $err, <<ERR,                              '    right diagnostic' );
1795759b3d2Safresh1#   Failed test 'deep scalar refs'
1805759b3d2Safresh1#   at $0 line 173.
1815759b3d2Safresh1#     Structures begin differing at:
1825759b3d2Safresh1#     \${\${     \$got}} = '42'
1835759b3d2Safresh1#     \${\${\$expected}} = '23'
1845759b3d2Safresh1ERR
1855759b3d2Safresh1
1865759b3d2Safresh1# I don't know how to properly display this structure.
1875759b3d2Safresh1# $a2 = { foo => \$a3 };
1885759b3d2Safresh1# $b2 = { foo => \$b3 };
1895759b3d2Safresh1# is_deeply([$a1], [$b1], 'deep mixed scalar refs');
1905759b3d2Safresh1
1915759b3d2Safresh1my $foo = {
1925759b3d2Safresh1           this => [1..10],
1935759b3d2Safresh1           that => { up => "down", left => "right" },
1945759b3d2Safresh1          };
1955759b3d2Safresh1
1965759b3d2Safresh1my $bar = {
1975759b3d2Safresh1           this => [1..10],
1985759b3d2Safresh1           that => { up => "down", left => "right", foo => 42 },
1995759b3d2Safresh1          };
2005759b3d2Safresh1
2015759b3d2Safresh1#line 198
2025759b3d2Safresh1ok !is_deeply( $foo, $bar, 'deep structures' );
2035759b3d2Safresh1ok( @Test::More::Data_Stack == 0, '@Data_Stack not holding onto things' );
2045759b3d2Safresh1is( $out, "not ok 11 - deep structures\n",  'deep structures' );
2055759b3d2Safresh1is( $err, <<ERR,                            '    right diagnostic' );
2065759b3d2Safresh1#   Failed test 'deep structures'
2075759b3d2Safresh1#   at $0 line 198.
2085759b3d2Safresh1#     Structures begin differing at:
2095759b3d2Safresh1#          \$got->{that}{foo} = Does not exist
2105759b3d2Safresh1#     \$expected->{that}{foo} = '42'
2115759b3d2Safresh1ERR
2125759b3d2Safresh1
2135759b3d2Safresh1
2145759b3d2Safresh1#line 221
2155759b3d2Safresh1my @tests = ([],
2165759b3d2Safresh1             [qw(42)],
2175759b3d2Safresh1             [qw(42 23), qw(42 23)]
2185759b3d2Safresh1            );
2195759b3d2Safresh1
2205759b3d2Safresh1foreach my $test (@tests) {
2215759b3d2Safresh1    my $num_args = @$test;
2225759b3d2Safresh1
2235759b3d2Safresh1    my $warning;
2245759b3d2Safresh1    local $SIG{__WARN__} = sub { $warning .= join '', @_; };
2255759b3d2Safresh1    ok !is_deeply(@$test);
2265759b3d2Safresh1
2275759b3d2Safresh1    like \$warning,
2285759b3d2Safresh1         "/^is_deeply\\(\\) takes two or three args, you gave $num_args\.\n/";
2295759b3d2Safresh1}
2305759b3d2Safresh1
2315759b3d2Safresh1
2325759b3d2Safresh1#line 240
2335759b3d2Safresh1# [rt.cpan.org 6837]
2345759b3d2Safresh1ok !is_deeply([{Foo => undef}],[{Foo => ""}]), 'undef != ""';
2355759b3d2Safresh1ok( @Test::More::Data_Stack == 0, '@Data_Stack not holding onto things' );
2365759b3d2Safresh1
2375759b3d2Safresh1
2385759b3d2Safresh1#line 258
2395759b3d2Safresh1# [rt.cpan.org 7031]
2405759b3d2Safresh1my $a = [];
2415759b3d2Safresh1ok !is_deeply($a, $a.''),       "don't compare refs like strings";
2425759b3d2Safresh1ok !is_deeply([$a], [$a.'']),   "  even deep inside";
2435759b3d2Safresh1
2445759b3d2Safresh1
2455759b3d2Safresh1#line 265
2465759b3d2Safresh1# [rt.cpan.org 7030]
2475759b3d2Safresh1ok !is_deeply( {}, {key => []} ),  '[] could match non-existent values';
2485759b3d2Safresh1ok !is_deeply( [], [[]] );
2495759b3d2Safresh1
2505759b3d2Safresh1
2515759b3d2Safresh1#line 273
2525759b3d2Safresh1$$err = $$out = '';
2535759b3d2Safresh1ok !is_deeply( [\'a', 'b'], [\'a', 'c'] );
2545759b3d2Safresh1is( $out, "not ok 20\n",  'scalar refs in an array' );
2555759b3d2Safresh1is( $err, <<ERR,        '    right diagnostic' );
2565759b3d2Safresh1#   Failed test at $0 line 274.
2575759b3d2Safresh1#     Structures begin differing at:
2585759b3d2Safresh1#          \$got->[1] = 'b'
2595759b3d2Safresh1#     \$expected->[1] = 'c'
2605759b3d2Safresh1ERR
2615759b3d2Safresh1
2625759b3d2Safresh1
2635759b3d2Safresh1#line 285
2645759b3d2Safresh1my $ref = \23;
2655759b3d2Safresh1ok !is_deeply( 23, $ref );
2665759b3d2Safresh1is( $out, "not ok 21\n", 'scalar vs ref' );
2675759b3d2Safresh1is( $err, <<ERR,        '  right diagnostic');
2685759b3d2Safresh1#   Failed test at $0 line 286.
2695759b3d2Safresh1#     Structures begin differing at:
2705759b3d2Safresh1#          \$got = '23'
2715759b3d2Safresh1#     \$expected = $ref
2725759b3d2Safresh1ERR
2735759b3d2Safresh1
2745759b3d2Safresh1#line 296
2755759b3d2Safresh1ok !is_deeply( $ref, 23 );
2765759b3d2Safresh1is( $out, "not ok 22\n", 'ref vs scalar' );
2775759b3d2Safresh1is( $err, <<ERR,        '  right diagnostic');
2785759b3d2Safresh1#   Failed test at $0 line 296.
2795759b3d2Safresh1#     Structures begin differing at:
2805759b3d2Safresh1#          \$got = $ref
2815759b3d2Safresh1#     \$expected = '23'
2825759b3d2Safresh1ERR
2835759b3d2Safresh1
2845759b3d2Safresh1#line 306
2855759b3d2Safresh1ok !is_deeply( undef, [] );
2865759b3d2Safresh1is( $out, "not ok 23\n", 'is_deeply and undef [RT 9441]' );
2875759b3d2Safresh1like( $err, <<ERR,	 '  right diagnostic' );
2885759b3d2Safresh1#   Failed test at $Filename line 306\\.
2895759b3d2Safresh1#     Structures begin differing at:
2905759b3d2Safresh1#          \\\$got = undef
2915759b3d2Safresh1#     \\\$expected = ARRAY\\(0x[0-9a-f]+\\)
2925759b3d2Safresh1ERR
2935759b3d2Safresh1
2945759b3d2Safresh1
2955759b3d2Safresh1# rt.cpan.org 8865
2965759b3d2Safresh1{
2975759b3d2Safresh1    my $array = [];
2985759b3d2Safresh1    my $hash  = {};
2995759b3d2Safresh1
3005759b3d2Safresh1#line 321
3015759b3d2Safresh1    ok !is_deeply( $array, $hash );
3025759b3d2Safresh1    is( $out, "not ok 24\n", 'is_deeply and different reference types' );
3035759b3d2Safresh1    is( $err, <<ERR, 	     '  right diagnostic' );
3045759b3d2Safresh1#   Failed test at $0 line 321.
3055759b3d2Safresh1#     Structures begin differing at:
3065759b3d2Safresh1#          \$got = $array
3075759b3d2Safresh1#     \$expected = $hash
3085759b3d2Safresh1ERR
3095759b3d2Safresh1
3105759b3d2Safresh1#line 332
3115759b3d2Safresh1    ok !is_deeply( [$array], [$hash] );
3125759b3d2Safresh1    is( $out, "not ok 25\n", 'nested different ref types' );
3135759b3d2Safresh1    is( $err, <<ERR,	     '  right diagnostic' );
3145759b3d2Safresh1#   Failed test at $0 line 332.
3155759b3d2Safresh1#     Structures begin differing at:
3165759b3d2Safresh1#          \$got->[0] = $array
3175759b3d2Safresh1#     \$expected->[0] = $hash
3185759b3d2Safresh1ERR
3195759b3d2Safresh1
3205759b3d2Safresh1
3215759b3d2Safresh1    # Overloaded object tests
3225759b3d2Safresh1    {
3235759b3d2Safresh1	my $foo = bless [], "Foo";
3245759b3d2Safresh1	my $bar = bless {}, "Bar";
3255759b3d2Safresh1
3265759b3d2Safresh1	{
3275759b3d2Safresh1	    package Bar;
3285759b3d2Safresh1	    "overload"->import(q[""] => sub { "wibble" });
3295759b3d2Safresh1	}
3305759b3d2Safresh1
3315759b3d2Safresh1#line 353
3325759b3d2Safresh1	ok !is_deeply( [$foo], [$bar] );
3335759b3d2Safresh1	is( $out, "not ok 26\n", 'string overloaded refs respected in diag' );
3345759b3d2Safresh1	is( $err, <<ERR,	     '  right diagnostic' );
3355759b3d2Safresh1#   Failed test at $0 line 353.
3365759b3d2Safresh1#     Structures begin differing at:
3375759b3d2Safresh1#          \$got->[0] = $foo
3385759b3d2Safresh1#     \$expected->[0] = 'wibble'
3395759b3d2Safresh1ERR
3405759b3d2Safresh1
3415759b3d2Safresh1    }
3425759b3d2Safresh1}
3435759b3d2Safresh1
3445759b3d2Safresh1
3455759b3d2Safresh1# rt.cpan.org 14746
3465759b3d2Safresh1{
3475759b3d2Safresh1# line 349
3485759b3d2Safresh1    ok !is_deeply( sub {"foo"}, sub {"bar"} ), 'function refs';
3495759b3d2Safresh1    is( $out, "not ok 27\n" );
3505759b3d2Safresh1    like( $err, <<ERR,	     '  right diagnostic' );
3515759b3d2Safresh1#   Failed test at $Filename line 349.
3525759b3d2Safresh1#     Structures begin differing at:
3535759b3d2Safresh1#          \\\$got = CODE\\(0x[0-9a-f]+\\)
3545759b3d2Safresh1#     \\\$expected = CODE\\(0x[0-9a-f]+\\)
3555759b3d2Safresh1ERR
3565759b3d2Safresh1
3575759b3d2Safresh1
3585759b3d2Safresh1    use Symbol;
3595759b3d2Safresh1    my $glob1 = gensym;
3605759b3d2Safresh1    my $glob2 = gensym;
3615759b3d2Safresh1
3625759b3d2Safresh1#line 357
3635759b3d2Safresh1    ok !is_deeply( $glob1, $glob2 ), 'typeglobs';
3645759b3d2Safresh1    is( $out, "not ok 28\n" );
3655759b3d2Safresh1    like( $err, <<ERR,	     '  right diagnostic' );
3665759b3d2Safresh1#   Failed test at $Filename line 357.
3675759b3d2Safresh1#     Structures begin differing at:
3685759b3d2Safresh1#          \\\$got = GLOB\\(0x[0-9a-f]+\\)
3695759b3d2Safresh1#     \\\$expected = GLOB\\(0x[0-9a-f]+\\)
3705759b3d2Safresh1ERR
3715759b3d2Safresh1
3725759b3d2Safresh1}
3735759b3d2Safresh1
3745759b3d2Safresh1
3755759b3d2Safresh1# rt.cpan.org 53469
3765759b3d2Safresh1{
3775759b3d2Safresh1
3785759b3d2Safresh1    # Accept both old and new-style stringification
3795759b3d2Safresh1    my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '^' : '-xism';
3805759b3d2Safresh1#line 380
3815759b3d2Safresh1    ok !is_deeply( qr/a/, qr/b/, "different regexes" );
3825759b3d2Safresh1    is( $out, "not ok 29 - different regexes\n" );
3835759b3d2Safresh1    is( $err, <<ERR,          '  right diagnostic' );
3845759b3d2Safresh1#   Failed test 'different regexes'
3855759b3d2Safresh1#   at $0 line 380.
3865759b3d2Safresh1#     Structures begin differing at:
3875759b3d2Safresh1#          \$got = (?$modifiers:a)
3885759b3d2Safresh1#     \$expected = (?$modifiers:b)
3895759b3d2Safresh1ERR
3905759b3d2Safresh1}
3915759b3d2Safresh1
3925759b3d2Safresh1
3935759b3d2Safresh1# false values that should not compare equal
3945759b3d2Safresh1{
3955759b3d2Safresh1    ok !is_deeply( 0, '', "0 != ''" );
3965759b3d2Safresh1    is( $out, "not ok 30 - 0 != ''\n" );
3975759b3d2Safresh1    ok !is_deeply( 0, undef, "0 != undef" );
3985759b3d2Safresh1    is( $out,    "not ok 31 - 0 != undef\n" );
3995759b3d2Safresh1    ok !is_deeply( '', undef, "'' != undef" );
4005759b3d2Safresh1    is( $out,     "not ok 32 - '' != undef\n" );
4015759b3d2Safresh1
4025759b3d2Safresh1    ok !is_deeply( [0], [''], "[0] != ['']" );
4035759b3d2Safresh1    is( $out,     "not ok 33 - [0] != ['']\n" );
4045759b3d2Safresh1    ok !is_deeply( [0], [undef], "[0] != [undef]" );
4055759b3d2Safresh1    is( $out,        "not ok 34 - [0] != [undef]\n" );
4065759b3d2Safresh1    ok !is_deeply( [''], [undef], "[''] != [undef]" );
4075759b3d2Safresh1    is( $out,         "not ok 35 - [''] != [undef]\n" );
4085759b3d2Safresh1
4095759b3d2Safresh1    ok !is_deeply( [0], [], "[0] != []" );
4105759b3d2Safresh1    is( $out,   "not ok 36 - [0] != []\n" );
4115759b3d2Safresh1    ok !is_deeply( [undef], [], "[undef] != []" );
4125759b3d2Safresh1    is( $out,       "not ok 37 - [undef] != []\n" );
4135759b3d2Safresh1    ok !is_deeply( [''], [], "[''] != []" );
4145759b3d2Safresh1    is( $out,    "not ok 38 - [''] != []\n" );
4155759b3d2Safresh1
4165759b3d2Safresh1    ok !is_deeply( {x => 0}, {x => ''}, "{x => 0} != {x => ''}" );
4175759b3d2Safresh1    is( $out,               "not ok 39 - {x => 0} != {x => ''}\n" );
4185759b3d2Safresh1    ok !is_deeply( {x => 0}, {x => undef}, "{x => 0} != {x => undef}" );
4195759b3d2Safresh1    is( $out,                  "not ok 40 - {x => 0} != {x => undef}\n" );
4205759b3d2Safresh1    ok !is_deeply( {x => ''}, {x => undef}, "{x => ''} != {x => undef}" );
4215759b3d2Safresh1    is( $out,                   "not ok 41 - {x => ''} != {x => undef}\n" );
4225759b3d2Safresh1}
4235759b3d2Safresh1
4245759b3d2Safresh1# this will also happily fail before 5.10, even though there's no VSTRING ref type
4255759b3d2Safresh1{
4265759b3d2Safresh1    my $version1 = v1.2.3;
4275759b3d2Safresh1    my $version2 = v1.2.4;
4285759b3d2Safresh1    ok !is_deeply( [\\$version1], [\\$version2], "version objects");
4295759b3d2Safresh1    is( $out, "not ok 42 - version objects\n" );
4305759b3d2Safresh1}
431*5486feefSafresh1
432*5486feefSafresh1{
433*5486feefSafresh1    my $version1 = v1.2.3;
434*5486feefSafresh1    my $version2 = '' . v1.2.3;
435*5486feefSafresh1    ok is_deeply( [\$version1], [\$version2], "version objects");
436*5486feefSafresh1    is( $out, "ok 43 - version objects\n" );
437*5486feefSafresh1}
438*5486feefSafresh1
439*5486feefSafresh1{
440*5486feefSafresh1    my $version1 = v1.2.3;
441*5486feefSafresh1    my $version2 = v1.2.3;
442*5486feefSafresh1    ok !is_deeply( [$version1], [\$version2], "version objects");
443*5486feefSafresh1    is( $out, "not ok 44 - version objects\n" );
444*5486feefSafresh1}
445*5486feefSafresh1
446*5486feefSafresh1{
447*5486feefSafresh1    my $string = "abc";
448*5486feefSafresh1    my $string2 = "b";
449*5486feefSafresh1    ok is_deeply( [\substr($string, 1, 1)], [\$string2], "lvalue ref");
450*5486feefSafresh1    is( $out, "ok 45 - lvalue ref\n" );
451*5486feefSafresh1}
452*5486feefSafresh1
453*5486feefSafresh1{
454*5486feefSafresh1    my $string = "b";
455*5486feefSafresh1    my $string2 = "b";
456*5486feefSafresh1    ok !is_deeply( [\substr($string, 1, 1)], ["b"], "lvalue ref");
457*5486feefSafresh1    is( $out, "not ok 46 - lvalue ref\n" );
458*5486feefSafresh1}
459