Fergal Daly <[EMAIL PROTECTED]> writes:

> The point about modification is that if 2 things start out equal to
> one another and they are modified in the same way then they should
> still be equal to one-another.


  That implies that two array refs are not equal:


use Test::More 'no_plan';
$x = [];
$y = [];
is_deeply($x, $y); # Equal, but "should" not be:
$x .= "";          # after the "same" modification
$y .= "";          # of the two things, they are
is_deeply($x, $y); # not equal!
__END__
ok 1
not ok 2
#     Failed test (- at line 7)
#          got: 'ARRAY(0x812b468)'
#     expected: 'ARRAY(0x812b54c)'
1..2
# Looks like you failed 1 tests of 2.


  Currently, is_deeply's idea of equivalence does not include that the
equivalent structures are equivalent after the same modification.  Or
even that they can be modified the same way:


use Test::More 'no_plan';
$x = \do{ my $t = 1 };
$y = \1;
is_deeply($$x, $$y); # Equal, but "should" not be:
eval { $$x++ };      # after the "same" modification
eval { $$y++ };      # of the two things, they are
is_deeply($$x, $$y); # not equal!
__END__
ok 1
not ok 2
#     Failed test (- at line 7)
#          got: '2'
#     expected: '1'
1..2
# Looks like you failed 1 tests of 2.


  Note the similarity between the previous and this:


use Test::More 'no_plan';
$t = 1;
is_deeply($t, 1); # Equal, but "should" not be:
eval q{ $t++ };   # after the "same" modification
eval q{ 1++ };    # of the two things, they are
is_deeply($t, 1); # not equal!
__END__
ok 1
not ok 2
#     Failed test (- at line 6)
#          got: '2'
#     expected: '1'
1..2
# Looks like you failed 1 tests of 2.


  ... and what do you know, I would welcome is_deeply to continue
behaving like this.  :-)



Eirik
-- 
You just paddle around there awhile, and I'll explain about these poles ...
        -- Sally Brown
Is that in Europe?
        -- Joyce Brown

Reply via email to