]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blobdiff - t/27-die.t
Add support for die()
[perl/modules/Sub-Nary.git] / t / 27-die.t
diff --git a/t/27-die.t b/t/27-die.t
new file mode 100644 (file)
index 0000000..3880282
--- /dev/null
@@ -0,0 +1,47 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 12;
+
+use Sub::Nary;
+
+my $sn = Sub::Nary->new();
+
+my ($x, $y);
+
+sub dies {
+ if ($x) {
+  die do { return 3, 4 if $y }
+ }
+ @_[0 .. 2];
+}
+
+my @tests = (
+ [ sub { die },                        { die => 1 } ],
+ [ sub { die 1 },                      { die => 1 } ],
+ [ sub { if ($x) { die } },            { die => 0.5, 1 => 0.5 } ],
+ [ sub { if (die) { return 1, 2 } },   { die => 1 } ],
+ [ sub { die do { return 3, 4 } },     { 2 => 1 } ],
+ [ sub { $x ? die($y ? die : return(2, 3)) : 4 },
+                                       { die => 0.25, 2 => 0.25, 1 => 0.5 } ],
+
+ [ \&dies,                             { die => 0.25, 2 => 0.25, 3 => 0.5 } ],
+ [ sub { dies(), do { $x ? @_ : 1 } }, { die => 0.25, 3 => 0.125, 4 => 0.25,
+                                          list => (0.25 + 0.5) * 0.5 } ],
+ [ sub { dies(), 1, do { $x ? @_ : 1 } },
+          { die => 0.25, 4 => 0.125, 5 => 0.25, list => (0.25 + 0.5) * 0.5 } ],
+
+ [ sub { eval "1, do { die }, 3" },    'list' ],
+ [ sub { eval { die } },               { 0 => 1 } ],
+ [ sub { eval { $x ? die : (4, 5) } }, { 0 => 0.5, 2 => 0.5 } ],
+);
+
+my $i = 1;
+for (@tests) {
+ my $r = $sn->nary($_->[0]);
+ my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
+ is_deeply($r, $exp, 'die test ' . $i);
+ ++$i;
+}