diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-08-18 15:08:00 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-08-18 16:25:59 -0500 |
commit | 93dd811c1233c3e9d28d92a56166436a81c3e854 (patch) | |
tree | 56710060e64212f37f85a651c5174c3523bd5bb1 /t/context.t | |
parent | e590eb7516d6c3533254fb85699473e43ac9c8d8 (diff) | |
download | try-93dd811c1233c3e9d28d92a56166436a81c3e854.tar.gz try-93dd811c1233c3e9d28d92a56166436a81c3e854.zip |
first implementation
Diffstat (limited to 't/context.t')
-rw-r--r-- | t/context.t | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/t/context.t b/t/context.t new file mode 100644 index 0000000..d35f97f --- /dev/null +++ b/t/context.t @@ -0,0 +1,54 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Try; + +my $ctx_index = { + VOID => undef, + LIST => 1, + SCALAR => '', +}; +my ($ctx, $die); + +for (sort keys %$ctx_index) { + $ctx = $_; + for (0,1) { + $die = $_; + if ($ctx_index->{$ctx}) { + is_deeply( + [ run() ], + [ $die ? 'catch' : 'try' ], + ); + } + elsif (defined $ctx_index->{$ctx}) { + is_deeply( + [ scalar run() ], + [ $die ? 'catch' : 'try' ], + ); + } + else { + run(); + 1; + } + } +} + +sub run { + try { + is (wantarray, $ctx_index->{$ctx}, "Proper context $ctx in try{}"); + die if $die; + return 'try'; + } + catch { + is (wantarray, $ctx_index->{$ctx}, "Proper context $ctx in catch{}"); + return 'catch'; + } + finally { + is (wantarray, undef, "Proper VOID context in finally{}"); + return 'finally'; + } +} + +done_testing; |