Provided by: libtest-unit-perl_0.25-1_all bug


       Test::Unit::Assertion::CodeRef - A delayed evaluation assertion using a Coderef


           require Test::Unit::Assertion::CodeRef;

           my $assert_eq =
             Test::Unit::Assertion::CodeRef->new(sub {
               $_[0] eq $_[1]
                 or Test::Unit::Failure->throw(-text =>
                                                 "Expected '$_[0]', got '$_[1]'\n");

           $assert_eq->do_assertion('foo', 'bar');

       Although this is how you'd use Test::Unit::Assertion::CodeRef directly, it is more usually
       used indirectly via Test::Unit::Test::assert, which instantiates a
       Test::Unit::Assertion::CodeRef when passed a Coderef as its first argument.


       Test::Unit::Assertion::CodeRef implements the Test::Unit::Assertion interface, which means
       it can be plugged into the Test::Unit::TestCase and friends' "assert" method with no ill


       This class is used by the framework to allow us to do assertions in a 'functional' manner.
       It is typically used generated automagically in code like:

           $self->assert(sub {
                           $_[0] == $_[1]
                             or $self->fail("Expected $_[0], got $_[1]");
                         }, 1, 2);

       (Note that if Damian Conway's Perl6 RFC for currying ever comes to pass then we'll be able
       to do this as:

           $self->assert(^1 == ^2 || $self->fail("Expected ^1, got ^2"), 1, 2)

       which will be nice...)

       If you have a working B::Deparse installed with your perl installation then, if an
       assertion fails, you'll see a listing of the decompiled coderef (which will be sadly
       devoid of comments, but should still be useful)


       Copyright (c) 2001 Piers Cawley <>.

       All rights reserved. This program is free software; you can redistribute it and/or modify
       it under the same terms as Perl itself.


       ·   Test::Unit::TestCase

       ·   Test::Unit::Assertion