]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blob - t/15-misc-xs.t
bd6baacc1d70327a48de9dd925ef61b9de0a9f4a
[perl/modules/Sub-Nary.git] / t / 15-misc-xs.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 12;
7
8 use Sub::Nary;
9
10 my @scalops = Sub::Nary::scalops();
11 my $nbr     = Sub::Nary::scalops();
12
13 is($nbr, scalar @scalops, 'scalops return values in list/scalar context are consistent');
14
15 *normalize = *Sub::Nary::normalize{CODE};
16
17 is_deeply(normalize(1),  { 1 => 1 }, 'normalize const');
18 is_deeply(normalize({}), { 0 => 1 }, 'normalize empty-ref');
19
20 *scale = *Sub::Nary::scale{CODE};
21
22 is_deeply(scale(1, {}), { 0 => 1 }, 'scale const, empty-ref');
23
24 *add = *Sub::Nary::add{CODE};
25
26 is_deeply(add('list'),             { list => 1 }, 'add list');
27 is_deeply(add(1, 'list'),          { list => 1 }, 'add const, list');
28 is_deeply(add({ }, 'list'),        { list => 1 }, 'add empty-ref, list');
29 is_deeply(add({ 1 => 1 }, 'list'), { list => 1 }, 'add ref, list');
30 is_deeply(add({ 1 => 1 }, 1),      { 1 => 2 }, 'add ref, prev-const');
31
32 *cumulate = *Sub::Nary::cumulate{CODE};
33
34 is_deeply(cumulate('list', 1, 1), 'list', 'cumulate const, non-zero, non-zero');
35 is_deeply(cumulate({ 1 => 1 }, 1, 0), { 1 => 1 }, 'cumulate ref, non-zero, zero');
36 is_deeply(cumulate({ }, 1, 1), undef, 'cumulate empty-ref, non-zero, non-zero');