is_deeply_dne_bug.t

来自「source of perl for linux application,」· T 代码 · 共 57 行

T
57
字号
#!/usr/bin/perl -w# test for rt.cpan.org 20768## There was a bug where the internal "does not exist" object could get# confused with an overloaded object.BEGIN {    if( $ENV{PERL_CORE} ) {        chdir 't';        @INC = ('../lib', 'lib');    }    else {        unshift @INC, 't/lib';    }}use strict;use Test::More;BEGIN {    if( !eval "require overload" ) {        plan skip_all => "needs overload.pm";    }    else {        plan tests => 2;    }}{    package Foo;    use overload    'eq' => \&overload_equiv,    '==' => \&overload_equiv;    sub new {        return bless {}, shift;    }    sub overload_equiv {        if (ref($_[0]) ne 'Foo' || ref($_[1]) ne 'Foo') {            print ref($_[0]), " ", ref($_[1]), "\n";            die "Invalid object passed to overload_equiv\n";        }        return 1; # change to 0 ... makes little difference    }}my $obj1 = Foo->new();my $obj2 = Foo->new();eval { is_deeply([$obj1, $obj2], [$obj1, $obj2]); };is $@, '';

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?