]> git.vpit.fr Git - perl/modules/Sub-Nary.git/commitdiff
Put grep/map tests into their own test file
authorVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 19:54:50 +0000 (21:54 +0200)
committerVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 19:54:50 +0000 (21:54 +0200)
MANIFEST
t/20-return.t
t/24-ops.t
t/25-grepmap.t [new file with mode: 0644]

index 37e7c29d7dd27181251e91ecfad0c63036e39610..922c7e3a59edadf122eca2075a294a5e6956eb12 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -16,6 +16,7 @@ t/21-list.t
 t/22-call.t
 t/23-branch.t
 t/24-ops.t
+t/25-grepmap.t
 t/90-boilerplate.t
 t/91-pod.t
 t/92-pod-coverage.t
index ccfd9e9fa2a0aaf8df73a912e5bb54677899507f..e08fdbacd8049a314a08baf1b18fbac2d1ec1830 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 79;
+use Test::More tests => 63;
 
 use Sub::Nary;
 
@@ -11,8 +11,6 @@ my $sn = Sub::Nary->new();
 
 my ($x, $y, @a, %h);
 
-my $exp_2 = { 1 => 0.5, 2 => 0.5 };
-
 my @tests = (
  [ sub { return },               0 ],
  [ sub { return () },            0 ],
@@ -88,30 +86,6 @@ my @tests = (
  [ sub { return eval { do { eval { @a } } } },      'list' ],
 
  [ sub { eval 'return 1, 2' }, 'list' ],
-
- [ sub { grep { return 2, 4 } 5 .. 10 },                  2 ],
- [ sub { grep { $_ > 1 } do { return 2, 4; 5 .. 10 } },   2 ],
- [ sub { grep { return 2, 4 } () },                       0 ],
- [ sub { grep { return $_ ? 2 : (3, 4) } 7 .. 8 },        $exp_2 ],
- [ sub { grep { return 2 if $_; 3 } 7 .. 8 },
-                                                  { 1 => 0.75, list => 0.25 } ],
- [ sub { grep { $_ > 1 } do { return $x ? 7 : (8, 9) } }, $exp_2 ],
- [ sub { grep { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; } },
-                                           { 3 => 0.5, 1 => 0.25, 2 => 0.25 } ],
- [ sub { grep { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; () } },
-                                                       { 3 => 0.5, 0 => 0.5 } ],
-
- [ sub { map { return 2, 4 } 5 .. 10 },                  2 ],
- [ sub { map { $_ + 1 } do { return 2, 4; 5 .. 10 } },   2 ],
- [ sub { map { return 2, 4 } () },                       0 ],
- [ sub { map { return $_ ? 2 : (3, 4) } 7 .. 8 },        $exp_2 ],
- [ sub { map { return 2 if $_; 3 } 7 .. 8 },
-                                                     { 1 => 0.75, 2 => 0.25 } ],
- [ sub { map { $_ > 1 } do { return $x ? 7 : (8, 9) } }, $exp_2 ],
- [ sub { map { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; } },
-                                           { 3 => 0.5, 1 => 0.25, 2 => 0.25 } ],
- [ sub { map { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; () } },
-                                                       { 3 => 0.5, 0 => 0.5 } ],
 );
 
 my $i = 1;
index b636cf847f3c297999e49a617498d89bf0cbe1e8..a69cd0ad4d5679e39fb940359750084a0a925319 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 49;
+use Test::More tests => 34;
 
 use Sub::Nary;
 
@@ -11,58 +11,10 @@ my $sn = Sub::Nary->new();
 
 my ($x, %h);
 
-sub zeroorone {
- return (rand() < 0.1) ? () : 1;
-}
-
-sub oneortwo {
- if (rand() < 0.1) {
-  return 3
- } else {
-  4, 5
- }
-}
-
-sub onetwothree {
- my $r = rand();
- if ($r < 0.1) {
-  return 3
- } elsif ($r < 0.9) {
-  return 4, 5
- }
- return 4, do { 5, 6 };
-}
-
-# { 1 => 0.5, 2 => 0.5 } * 0.5 + { 2 => 0.25, 3 => 0.5, 4 => 0.25 } * 0.5
-my $exp_22 = { 1 => 0.5 * 0.5, 2 => (0.5 + 0.25) * 0.5, 3 => 0.5 * 0.5, 4 => 0.25 * 0.5 };
-
-# { 1 => 0.5, 2 => 0.25, 3 => 0.25 } * 0.5 + { 2 => 0.25, 3 => 0.25, 4 => 0.3125, 5 => 0.125, 6 => 0.0625 } * 0.5
-my $exp_32 = { 1 => 0.5/2, 2 => (0.25+0.25)/2, 3 => (0.25+0.25)/2, 4 => (0.3125)/2, 5 => (0.125)/2, 6 => (0.0625)/2 };
-
-my $b3 = 0.5 ** 3;
-my $exp_23 = { 3 => $b3, 4 => 3 * $b3, 5 => 3 * $b3, 6 => $b3 };
-
 my @tests = (
  [ sub { delete $h{foo} },             1 ],
  [ sub { delete @h{qw/foo bar baz/} }, 3 ],
 
- [ sub { grep { 1 } 1 .. 10 }, 'list' ],
- [ sub { grep { 1 } @_ },      'list' ],
-
- [ sub { map { $_ } 1 .. 3 },                       3 ],
- [ sub { map { () } @_ },                           0 ],
- [ sub { map { @_ } () },                           0 ],
- [ sub { map { @_ } 1, 2 },                         'list' ],
- [ sub { map { $_ } oneortwo() },                   { 1 => 0.5, 2 => 0.5 } ],
- [ sub { map { $_ ? 7 : (8, 9) } 1 .. 3 },          $exp_23 ],
- [ sub { map oneortwo, 1 .. 3 },                    $exp_23 ],
- [ sub { map oneortwo, @_ },                        'list' ],
- [ sub { map zeroorone, @_ },                       { 0 => 0.5, list => 0.5 } ],
- [ sub { map { $_ ? () : 12 } do { $x ? 7 : () } }, { 0 => 0.75, 1 => 0.25 } ],
- [ sub { map zeroorone, do { $x ? 7 : () } },       { 0 => 0.75, 1 => 0.25 } ],
- [ sub { map oneortwo, oneortwo },                  $exp_22 ],
- [ sub { map onetwothree, oneortwo },               $exp_32 ],
-
  [ sub { return <$x> }, 'list' ],
 
  [ sub { -f $0, -r $0 }, 2 ],
diff --git a/t/25-grepmap.t b/t/25-grepmap.t
new file mode 100644 (file)
index 0000000..06a4ddf
--- /dev/null
@@ -0,0 +1,96 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 31;
+
+use Sub::Nary;
+
+my $sn = Sub::Nary->new();
+
+my ($x, $y, @a, %h);
+
+sub zeroorone {
+ return (rand() < 0.1) ? () : 1;
+}
+
+sub oneortwo {
+ if (rand() < 0.1) {
+  return 3
+ } else {
+  4, 5
+ }
+}
+
+sub onetwothree {
+ my $r = rand();
+ if ($r < 0.1) {
+  return 3
+ } elsif ($r < 0.9) {
+  return 4, 5
+ }
+ return 4, do { 5, 6 };
+}
+
+my $exp_2 = { 1 => 0.5, 2 => 0.5 };
+
+# { 1 => 0.5, 2 => 0.5 } * 0.5 + { 2 => 0.25, 3 => 0.5, 4 => 0.25 } * 0.5
+my $exp_22 = { 1 => 0.5 * 0.5, 2 => (0.5 + 0.25) * 0.5, 3 => 0.5 * 0.5, 4 => 0.25 * 0.5 };
+
+# { 1 => 0.5, 2 => 0.25, 3 => 0.25 } * 0.5 + { 2 => 0.25, 3 => 0.25, 4 => 0.3125, 5 => 0.125, 6 => 0.0625 } * 0.5
+my $exp_32 = { 1 => 0.5/2, 2 => (0.25+0.25)/2, 3 => (0.25+0.25)/2, 4 => (0.3125)/2, 5 => (0.125)/2, 6 => (0.0625)/2 };
+
+my $b3 = 0.5 ** 3;
+my $exp_23 = { 3 => $b3, 4 => 3 * $b3, 5 => 3 * $b3, 6 => $b3 };
+
+my @tests = (
+ [ sub { grep { return 2, 4 } 5 .. 10 },                  2 ],
+ [ sub { grep { $_ > 1 } do { return 2, 4; 5 .. 10 } },   2 ],
+ [ sub { grep { return 2, 4 } () },                       0 ],
+ [ sub { grep { return $_ ? 2 : (3, 4) } 7 .. 8 },        $exp_2 ],
+ [ sub { grep { return 2 if $_; 3 } 7 .. 8 },
+                                                  { 1 => 0.75, list => 0.25 } ],
+ [ sub { grep { $_ > 1 } do { return $x ? 7 : (8, 9) } }, $exp_2 ],
+ [ sub { grep { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; } },
+                                           { 3 => 0.5, 1 => 0.25, 2 => 0.25 } ],
+ [ sub { grep { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; () } },
+                                                       { 3 => 0.5, 0 => 0.5 } ],
+
+ [ sub { map { return 2, 4 } 5 .. 10 },                  2 ],
+ [ sub { map { $_ + 1 } do { return 2, 4; 5 .. 10 } },   2 ],
+ [ sub { map { return 2, 4 } () },                       0 ],
+ [ sub { map { return $_ ? 2 : (3, 4) } 7 .. 8 },        $exp_2 ],
+ [ sub { map { return 2 if $_; 3 } 7 .. 8 },
+                                                     { 1 => 0.75, 2 => 0.25 } ],
+ [ sub { map { $_ > 1 } do { return $x ? 7 : (8, 9) } }, $exp_2 ],
+ [ sub { map { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; } },
+                                           { 3 => 0.5, 1 => 0.25, 2 => 0.25 } ],
+ [ sub { map { return $_ ? 2 : (3, 4) } do { return 3 .. 5 if $x; () } },
+                                                       { 3 => 0.5, 0 => 0.5 } ],
+
+ [ sub { grep { 1 } 1 .. 10 }, 'list' ],
+ [ sub { grep { 1 } @_ },      'list' ],
+
+ [ sub { map { $_ } 1 .. 3 },                       3 ],
+ [ sub { map { () } @_ },                           0 ],
+ [ sub { map { @_ } () },                           0 ],
+ [ sub { map { @_ } 1, 2 },                         'list' ],
+ [ sub { map { $_ } oneortwo() },                   { 1 => 0.5, 2 => 0.5 } ],
+ [ sub { map { $_ ? 7 : (8, 9) } 1 .. 3 },          $exp_23 ],
+ [ sub { map oneortwo, 1 .. 3 },                    $exp_23 ],
+ [ sub { map oneortwo, @_ },                        'list' ],
+ [ sub { map zeroorone, @_ },                       { 0 => 0.5, list => 0.5 } ],
+ [ sub { map { $_ ? () : 12 } do { $x ? 7 : () } }, { 0 => 0.75, 1 => 0.25 } ],
+ [ sub { map zeroorone, do { $x ? 7 : () } },       { 0 => 0.75, 1 => 0.25 } ],
+ [ sub { map oneortwo, oneortwo },                  $exp_22 ],
+ [ sub { map onetwothree, oneortwo },               $exp_32 ],
+);
+
+my $i = 1;
+for (@tests) {
+ my $r = $sn->nary($_->[0]);
+ my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
+ is_deeply($r, $exp, 'grep/map test ' . $i);
+ ++$i;
+}