File: equal_range.t

package info (click to toggle)
liblist-moreutils-perl 0.430-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 1,228 kB
  • sloc: perl: 13,167; makefile: 17
file content (48 lines) | stat: -rw-r--r-- 1,371 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!perl

use strict ("subs", "vars", "refs");
use warnings ("all");
BEGIN { $ENV{LIST_MOREUTILS_PP} = 0; }
END { delete $ENV{LIST_MOREUTILS_PP} } # for VMS
use List::MoreUtils (":all");
use lib ("t/lib");


use Test::More;
use Test::LMU;

my @list = (1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 11, 13, 13, 13, 17);
is_deeply([0,  0],  [equal_range { $_ <=> 0 } @list], "equal range 0");
is_deeply([0,  2],  [equal_range { $_ <=> 1 } @list], "equal range 1");
is_deeply([2,  4],  [equal_range { $_ <=> 2 } @list], "equal range 2");
is_deeply([10, 14], [equal_range { $_ <=> 4 } @list], "equal range 4");
is_deeply([(scalar @list) x 2], [equal_range { $_ <=> 19 } @list], "equal range 19");

my @in = @list = 1 .. 100;
leak_free_ok(
    equal_range => sub {
        my $elem = int(rand(101)) + 1;
        equal_range { $_ - $elem } @list;
    }
);

leak_free_ok(
    'equal_range with stack-growing' => sub {
        my $elem = int(rand(101));
        equal_range { grow_stack(); $_ - $elem } @list;
    }
);

leak_free_ok(
    'equal_range with stack-growing and exception' => sub {
        my $elem = int(rand(101));
        eval {
            equal_range { grow_stack(); $_ - $elem or die "Goal!"; $_ - $elem } @list;
        };
    }
);
is_dying('equal_range without sub' => sub { &equal_range(42, (1 .. 100)); });

done_testing;