]> git.vpit.fr Git - perl/modules/Scalar-Vec-Util.git/blob - t/20-vfill-pp.t
aaf3618a78f6a1c2a46a8a62124a79bfffdbaadb
[perl/modules/Scalar-Vec-Util.git] / t / 20-vfill-pp.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More 'no_plan';
7
8 use Scalar::Vec::Util;
9
10 eval { Scalar::Vec::Util::vfill_pp(undef, 0, 0, 0) };
11 like($@, qr/Invalid\s+argument/, 'first argument undef croaks');
12 eval { Scalar::Vec::Util::vfill_pp(my $x, undef, 0, 0) };
13 like($@, qr/Invalid\s+argument/, 'second argument undef croaks');
14 eval { Scalar::Vec::Util::vfill_pp(my $x, 0, undef, 0) };
15 like($@, qr/Invalid\s+argument/, 'third argument undef croaks');
16 eval { Scalar::Vec::Util::vfill_pp(my $x, 0, 0, undef) };
17 like($@, qr/Invalid\s+argument/, 'fourth argument undef croaks');
18
19 my $p = 8;
20 my $n = 3 * $p;
21 my $q = 1;
22
23 sub myfill {
24  (undef, my $s, my $l, my $x) = @_;
25  $x = 1 if $x;
26  vec($_[0], $_, 1) = $x for $s .. $s + $l - 1;
27 }
28
29 *myeq = *Scalar::Vec::Util::veq_pp;
30
31 sub rst { myfill($_[0], 0, $n, 0); $_[0] = '' }
32
33 my ($v, $c) = ('') x 2;
34
35 my @s = ($p - $q) .. ($p + $q);
36 for my $s (@s) {
37  for my $l (0 .. $n - 1) {
38   next if $s + $l > $n;
39   rst $c;
40   myfill($c, 0,  $s, 0);
41   myfill($c, $s, $l, 1);
42   rst $v;
43   Scalar::Vec::Util::vfill_pp($v, 0,  $s, 0);
44   Scalar::Vec::Util::vfill_pp($v, $s, $l, 1);
45   ok(myeq($v, 0, $c, 0, $n), "vfill_pp $s, $l");
46   is(length $v, length $c,   "vfill_pp $s, $l length");
47  }
48 }