Projekt

Allgemein

Profil

Herunterladen (3,13 KB) Statistiken
| Zweig: | Markierung: | Revision:
use Test::More tests => 52;

use strict;

use lib 't';

use_ok 'SL::Util';

sub numtest {
my @result = SL::Util::_hashify(@_);
return scalar(@result);
}

sub memtest {
my $key = shift;
my $keep = $_[0];
my @result = SL::Util::_hashify(@_);
splice @result, 0, $keep;

return '<empty>' if !@result;
return '<odd-sized>' if scalar(@result) % 2;

my %hash = @result;
return $hash{$key};
}

my $href = { 42 => 54, unicorn => 'charlie' };
my %hash = ( 23 => 13, chunky => 'bacon' );

is(numtest(0, $href), 4, 'case A1');
is(numtest(0, %hash), 4, 'case A2');
is(numtest(1, $href), 1, 'case A3');
is(numtest(1, %hash), 4, 'case A4');
is(numtest(2, $href), 1, 'case A5');
is(numtest(2, %hash), 4, 'case A6');
is(numtest(3, $href), 1, 'case A7');
is(numtest(3, %hash), 4, 'case A8');
is(numtest(4, $href), 1, 'case A9');
is(numtest(4, %hash), 4, 'case A10');
is(numtest(5, $href), 1, 'case A11');
is(numtest(5, %hash), 4, 'case A12');

is(numtest(0, 'dummy1', $href), 2, 'case B1');
is(numtest(0, 'dummy1', %hash), 5, 'case B2');
is(numtest(1, 'dummy1', $href), 5, 'case B3');
is(numtest(1, 'dummy1', %hash), 5, 'case B4');
is(numtest(2, 'dummy1', $href), 2, 'case B5');
is(numtest(2, 'dummy1', %hash), 5, 'case B6');
is(numtest(3, 'dummy1', $href), 2, 'case B7');
is(numtest(3, 'dummy1', %hash), 5, 'case B8');
is(numtest(4, 'dummy1', $href), 2, 'case B9');
is(numtest(4, 'dummy1', %hash), 5, 'case B10');
is(numtest(5, 'dummy1', $href), 2, 'case B11');
is(numtest(5, 'dummy1', %hash), 5, 'case B12');

is(numtest(0, 'dummy1', 'dummy2', $href), 3, 'case C1');
is(numtest(0, 'dummy1', 'dummy2', %hash), 6, 'case C2');
is(numtest(1, 'dummy1', 'dummy2', $href), 3, 'case C3');
is(numtest(1, 'dummy1', 'dummy2', %hash), 6, 'case C4');
is(numtest(2, 'dummy1', 'dummy2', $href), 6, 'case C5');
is(numtest(2, 'dummy1', 'dummy2', %hash), 6, 'case C6');
is(numtest(3, 'dummy1', 'dummy2', $href), 3, 'case C7');
is(numtest(3, 'dummy1', 'dummy2', %hash), 6, 'case C8');
is(numtest(4, 'dummy1', 'dummy2', $href), 3, 'case C9');
is(numtest(4, 'dummy1', 'dummy2', %hash), 6, 'case C10');
is(numtest(5, 'dummy1', 'dummy2', $href), 3, 'case C11');
is(numtest(5, 'dummy1', 'dummy2', %hash), 6, 'case C12');

is(memtest(42, 0, $href), '54', 'case D1');
is(memtest(23, 0, %hash), '13', 'case D2');
is(memtest('unicorn', 0, $href), 'charlie', 'case D3');
is(memtest('chunky', 0, %hash), 'bacon', 'case D4');
is(memtest(42, 1, $href), '<empty>', 'case D5');
is(memtest(23, 1, %hash), '<odd-sized>', 'case D6');

is(memtest(42, 0, 'dummy1', $href), undef, 'case E1');
is(memtest(23, 0, 'dummy1', %hash), '<odd-sized>', 'case E2');
is(memtest('unicorn', 0, 'dummy1', $href), undef, 'case E3');
is(memtest(42, 1, 'dummy1', $href), '54', 'case E4');
is(memtest(23, 1, 'dummy1', %hash), '13', 'case E5');
is(memtest('unicorn', 1, 'dymmy1', $href), 'charlie', 'case E6');
is(memtest('chunky', 1, 'dummy1', %hash), 'bacon', 'case E7');
is(memtest(42, 2, 'dummy1', $href), '<empty>', 'case E8');
is(memtest(23, 2, 'dummy1', %hash), '<odd-sized>', 'case E9');
(5-5/11)