Dokumentation: Schweizer QR-Rechnung Ergänzung zu Rechnungen ohne Betrag
[kivitendo-erp.git] / t / helper / hashify.t
1 use Test::More tests => 52;
2
3 use strict;
4
5 use lib 't';
6
7 use_ok 'SL::Util';
8
9 sub numtest {
10   my @result = SL::Util::_hashify(@_);
11   return scalar(@result);
12 }
13
14 sub memtest {
15   my $key    = shift;
16   my $keep   = $_[0];
17   my @result = SL::Util::_hashify(@_);
18   splice @result, 0, $keep;
19
20   return '<empty>'     if !@result;
21   return '<odd-sized>' if scalar(@result) % 2;
22
23   my %hash = @result;
24   return $hash{$key};
25 }
26
27 my $href = { 42 => 54, unicorn => 'charlie' };
28 my %hash = ( 23 => 13, chunky  => 'bacon'   );
29
30 is(numtest(0, $href), 4, 'case A1');
31 is(numtest(0, %hash), 4, 'case A2');
32 is(numtest(1, $href), 1, 'case A3');
33 is(numtest(1, %hash), 4, 'case A4');
34 is(numtest(2, $href), 1, 'case A5');
35 is(numtest(2, %hash), 4, 'case A6');
36 is(numtest(3, $href), 1, 'case A7');
37 is(numtest(3, %hash), 4, 'case A8');
38 is(numtest(4, $href), 1, 'case A9');
39 is(numtest(4, %hash), 4, 'case A10');
40 is(numtest(5, $href), 1, 'case A11');
41 is(numtest(5, %hash), 4, 'case A12');
42
43 is(numtest(0, 'dummy1', $href), 2, 'case B1');
44 is(numtest(0, 'dummy1', %hash), 5, 'case B2');
45 is(numtest(1, 'dummy1', $href), 5, 'case B3');
46 is(numtest(1, 'dummy1', %hash), 5, 'case B4');
47 is(numtest(2, 'dummy1', $href), 2, 'case B5');
48 is(numtest(2, 'dummy1', %hash), 5, 'case B6');
49 is(numtest(3, 'dummy1', $href), 2, 'case B7');
50 is(numtest(3, 'dummy1', %hash), 5, 'case B8');
51 is(numtest(4, 'dummy1', $href), 2, 'case B9');
52 is(numtest(4, 'dummy1', %hash), 5, 'case B10');
53 is(numtest(5, 'dummy1', $href), 2, 'case B11');
54 is(numtest(5, 'dummy1', %hash), 5, 'case B12');
55
56 is(numtest(0, 'dummy1', 'dummy2', $href), 3, 'case C1');
57 is(numtest(0, 'dummy1', 'dummy2', %hash), 6, 'case C2');
58 is(numtest(1, 'dummy1', 'dummy2', $href), 3, 'case C3');
59 is(numtest(1, 'dummy1', 'dummy2', %hash), 6, 'case C4');
60 is(numtest(2, 'dummy1', 'dummy2', $href), 6, 'case C5');
61 is(numtest(2, 'dummy1', 'dummy2', %hash), 6, 'case C6');
62 is(numtest(3, 'dummy1', 'dummy2', $href), 3, 'case C7');
63 is(numtest(3, 'dummy1', 'dummy2', %hash), 6, 'case C8');
64 is(numtest(4, 'dummy1', 'dummy2', $href), 3, 'case C9');
65 is(numtest(4, 'dummy1', 'dummy2', %hash), 6, 'case C10');
66 is(numtest(5, 'dummy1', 'dummy2', $href), 3, 'case C11');
67 is(numtest(5, 'dummy1', 'dummy2', %hash), 6, 'case C12');
68
69 is(memtest(42,        0, $href), '54',          'case D1');
70 is(memtest(23,        0, %hash), '13',          'case D2');
71 is(memtest('unicorn', 0, $href), 'charlie',     'case D3');
72 is(memtest('chunky',  0, %hash), 'bacon',       'case D4');
73 is(memtest(42,        1, $href), '<empty>',     'case D5');
74 is(memtest(23,        1, %hash), '<odd-sized>', 'case D6');
75
76 is(memtest(42,        0, 'dummy1', $href), undef,         'case E1');
77 is(memtest(23,        0, 'dummy1', %hash), '<odd-sized>', 'case E2');
78 is(memtest('unicorn', 0, 'dummy1', $href), undef,         'case E3');
79 is(memtest(42,        1, 'dummy1', $href), '54',          'case E4');
80 is(memtest(23,        1, 'dummy1', %hash), '13',          'case E5');
81 is(memtest('unicorn', 1, 'dymmy1', $href), 'charlie',     'case E6');
82 is(memtest('chunky',  1, 'dummy1', %hash), 'bacon',       'case E7');
83 is(memtest(42,        2, 'dummy1', $href), '<empty>',     'case E8');
84 is(memtest(23,        2, 'dummy1', %hash), '<odd-sized>', 'case E9');