]> git.vpit.fr Git - perl/modules/Sub-Nary.git/commitdiff
Move misc XS tests to t/15-misc-xs.t, including scalops tests. Simplify pp_rv2av
authorVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 22:07:53 +0000 (00:07 +0200)
committerVincent Pit <vince@profvince.com>
Fri, 8 Aug 2008 22:07:53 +0000 (00:07 +0200)
MANIFEST
lib/Sub/Nary.pm
t/15-misc-xs.t [new file with mode: 0644]
t/15-scalops.t [deleted file]
t/24-ops.t
t/25-grepmap.t

index 922c7e3a59edadf122eca2075a294a5e6956eb12..a6d62d3c3bf6ee074aafe0516a327d82cfbe9a0d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -9,7 +9,7 @@ t/00-load.t
 t/02-can.t
 t/10-obj.t
 t/11-cache.t
-t/15-scalops.t
+t/15-misc-xs.t
 t/16-combine.t
 t/20-return.t
 t/21-list.t
index ef92fa178aab2f41bef787150aae2aec7b6ffca1..838fab0c7cfd79dfa807c6473311439894f7a872 100644 (file)
@@ -446,12 +446,11 @@ sub pp_rv2av {
  my ($self, $op) = @_;
  $op = $op->first;
 
- my ($r, $l) = $self->inspect($op);
- if (name($op) ne 'const') {
-  my $c = 1 - count $r;
-  $l = $c ? { list => $c } : 0;
+ if (name($op) eq 'gv') {
+  return undef, { list => 1 };
  }
- return $r, $l; 
+
+ $self->inspect($op);
 }
 
 sub pp_aassign {
diff --git a/t/15-misc-xs.t b/t/15-misc-xs.t
new file mode 100644 (file)
index 0000000..bd6baac
--- /dev/null
@@ -0,0 +1,36 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 12;
+
+use Sub::Nary;
+
+my @scalops = Sub::Nary::scalops();
+my $nbr     = Sub::Nary::scalops();
+
+is($nbr, scalar @scalops, 'scalops return values in list/scalar context are consistent');
+
+*normalize = *Sub::Nary::normalize{CODE};
+
+is_deeply(normalize(1),  { 1 => 1 }, 'normalize const');
+is_deeply(normalize({}), { 0 => 1 }, 'normalize empty-ref');
+
+*scale = *Sub::Nary::scale{CODE};
+
+is_deeply(scale(1, {}), { 0 => 1 }, 'scale const, empty-ref');
+
+*add = *Sub::Nary::add{CODE};
+
+is_deeply(add('list'),             { list => 1 }, 'add list');
+is_deeply(add(1, 'list'),          { list => 1 }, 'add const, list');
+is_deeply(add({ }, 'list'),        { list => 1 }, 'add empty-ref, list');
+is_deeply(add({ 1 => 1 }, 'list'), { list => 1 }, 'add ref, list');
+is_deeply(add({ 1 => 1 }, 1),      { 1 => 2 }, 'add ref, prev-const');
+
+*cumulate = *Sub::Nary::cumulate{CODE};
+
+is_deeply(cumulate('list', 1, 1), 'list', 'cumulate const, non-zero, non-zero');
+is_deeply(cumulate({ 1 => 1 }, 1, 0), { 1 => 1 }, 'cumulate ref, non-zero, zero');
+is_deeply(cumulate({ }, 1, 1), undef, 'cumulate empty-ref, non-zero, non-zero');
diff --git a/t/15-scalops.t b/t/15-scalops.t
deleted file mode 100644 (file)
index 0efd039..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!perl -T
-
-use strict;
-use warnings;
-
-use Test::More tests => 1;
-
-use Sub::Nary;
-
-my @scalops = Sub::Nary::scalops();
-my $nbr     = Sub::Nary::scalops();
-
-is($nbr, scalar @scalops, 'Sub::Nary::scalops return values in list/scalar context are consistent');
index a69cd0ad4d5679e39fb940359750084a0a925319..3bfe5429823e7d7a5006367215ae9e8df18a6818 100644 (file)
@@ -57,7 +57,7 @@ my @tests = (
  [ sub { endprotoent }, 1 ],
  [ sub { endservent },  1 ],
 
- [ sub { <*.*> }, { list => 0.5, 1 => 0.5 } ],
+ [ sub { <*.*> }, 1 ],
 );
 
 my $i = 1;
index 06a4ddfae2a4a470378e99f51d2d6f3f4c33f81e..2a64d83fb8b4e375158bddd5ba07d6e633c80fe5 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 31;
+use Test::More tests => 32;
 
 use Sub::Nary;
 
@@ -69,8 +69,9 @@ my @tests = (
  [ 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 { grep { 1 } 1 .. 10 },      'list' ],
+ [ sub { grep { 1 } @_ },           'list' ],
+ [ sub { grep { 1 } () },           0 ],
 
  [ sub { map { $_ } 1 .. 3 },                       3 ],
  [ sub { map { () } @_ },                           0 ],