]> git.vpit.fr Git - perl/modules/Scalar-Vec-Util.git/blobdiff - t/40-vshift.t
Run lengthy tests with Test::Leaner
[perl/modules/Scalar-Vec-Util.git] / t / 40-vshift.t
index 39e14d54e280c2f6ad046b41bd21ab14efb2a596..635bba2842deed62203c1264256a9597a29f78ac 100644 (file)
@@ -3,10 +3,18 @@
 use strict;
 use warnings;
 
-use Test::More 'no_plan';
+use lib 't/lib';
+use Test::Leaner 'no_plan';
 
 use Scalar::Vec::Util qw/vshift SVU_SIZE/;
 
+for ([ 1, 'offset', -1 ], [ 2, 'length', '-1' ]) {
+ my @args  = ('1') x 4;
+ $args[$_->[0]] = $_->[2];
+ eval { &vshift(@args) }; my $line = __LINE__;
+ like $@, qr/^Invalid\s+negative\s+$_->[1]\s+at\s+\Q$0\E\s+line\s+$line/;
+}
+
 my $p = SVU_SIZE;
 $p = 8 if $p < 8;
 my $n = 3 * $p;
@@ -27,6 +35,22 @@ sub pat {
  }
 }
 
+sub expect {
+ (undef, my $s, my $l, my $b, my $left, my $insert) = @_;
+ myfill($_[0], 0, $s, 0);
+ if ($b < $l) {
+  if ($left) {
+   myfill($_[0], $s,      $b,      defined $insert ? $insert : 1);
+   myfill($_[0], $s + $b, $l - $b, 1);
+  } else {
+   myfill($_[0], $s,           $l - $b, 1);
+   myfill($_[0], $s + $l - $b, $b,      defined $insert ? $insert : 1);
+  }
+ } else {
+  myfill($_[0], $s, $l, defined $insert ? $insert : 1);
+ }
+}
+
 my ($v, $v0, $c) = ('', '') x 2;
 
 sub try {
@@ -35,22 +59,16 @@ sub try {
  for my $s (@s) {
   for my $l (0 .. $n - 1) {
    last if $s + $l > $n;
+   rst $v0;
    pat $v0, $s, $l, 0;
    my @b = (0);
    my $l2 = int($l/2);
    push @b, $l2 if $l2 != $l;
-   push @b, $l  if $l;
+   push @b, $l + 1;
    for my $b (@b) {
     $v = $v0;
-    $c = '';
-    myfill($c, 0, $s, 0);
-    if ($left) {
-     myfill($c, $s,      $b,      defined $insert ? $insert : 1);
-     myfill($c, $s + $b, $l - $b, 1);
-    } else {
-     myfill($c, $s,           $l - $b, 1);
-     myfill($c, $s + $l - $b, $b,      defined $insert ? $insert : 1);
-    }
+    rst $c;
+    expect $c, $s, $l, $b, $left, $insert;
     $b = -$b unless $left;
     vshift $v, $s, $l => $b, $insert;
     my $i = defined $insert ? $insert : 'undef';