From: Chris W. <la...@us...> - 2005-02-28 01:02:19
|
Update of /cvsroot/openinteract/OpenInteract2/t In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31612 Modified Files: exception.t Log Message: add checks for when a parameter is invalid in multiple ways, and for when multiple parameters are invalid Index: exception.t =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/t/exception.t,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** exception.t 10 Jun 2004 22:47:26 -0000 1.8 --- exception.t 28 Feb 2005 01:02:07 -0000 1.9 *************** *** 6,10 **** use lib 't/'; require 'utils.pl'; ! use Test::More tests => 65; BEGIN { --- 6,10 ---- use lib 't/'; require 'utils.pl'; ! use Test::More tests => 82; BEGIN { *************** *** 271,274 **** --- 271,344 ---- } + # Test the parameter exception with multiple failures for one field + + { + my $p_message = 'Parameters failed to validate'; + my $p_length_fail = 'Must be at least 5 characters'; + my $p_chars_fail = 'Must not have any unseemly characters'; + my $all_errors = [ $p_length_fail, $p_chars_fail ]; + my %p_fail = ( username => $all_errors ); + eval { + OpenInteract2::Exception::Parameter->throw( + $p_message, { parameter_fail => \%p_fail } ) + }; + my $p = $@; + + is( ref $p, 'OpenInteract2::Exception::Parameter', + 'Parameter object creation' ); + is( $p->message(), $p_message, + 'Parameter message creation' ); + ok( $p->package(), + 'Parameter package set' ); + ok( $p->line(), + 'Parameter line number set' ); + + my $failures = $p->parameter_fail; + is( ref $failures, 'HASH', + 'Failed parameters is hash' ); + is_deeply( $failures->{username}, $all_errors, + 'Both failures for parameter username set' ); + + is( ref( $p->trace() ), 'Devel::StackTrace', + 'Trace set' ); + is( "$p", "One or more parameters were not valid: username: $p_length_fail; $p_chars_fail", + '$@ stringified' ); + } + + # Test the parameter exception with multiple fields failing + + { + my $p_message = 'Parameters failed to validate'; + my $p_length_fail = 'Must be at least 5 characters'; + my $p_chars_fail = 'Must not have any unseemly characters'; + my %p_fail = ( username => $p_length_fail, password => $p_chars_fail ); + eval { + OpenInteract2::Exception::Parameter->throw( + $p_message, { parameter_fail => \%p_fail } ) + }; + my $p = $@; + + is( ref $p, 'OpenInteract2::Exception::Parameter', + 'Parameter object creation' ); + is( $p->message(), $p_message, + 'Parameter message creation' ); + ok( $p->package(), + 'Parameter package set' ); + ok( $p->line(), + 'Parameter line number set' ); + + my $failures = $p->parameter_fail; + is( ref $failures, 'HASH', + 'Failed parameters is hash' ); + is( $failures->{username}, $p_length_fail, + 'Failure for parameter username set' ); + is( $failures->{password}, $p_chars_fail, + 'Failure for parameter password set' ); + + is( ref( $p->trace() ), 'Devel::StackTrace', + 'Trace set' ); + is( "$p", "One or more parameters were not valid: password: $p_chars_fail ;; username: $p_length_fail", + '$@ stringified' ); + } # shortcut |