1*5759b3d2Safresh1#!./perl
2*5759b3d2Safresh1
3*5759b3d2Safresh1use strict;
4*5759b3d2Safresh1use warnings;
5*5759b3d2Safresh1
6*5759b3d2Safresh1use List::Util qw(head tail);
7*5759b3d2Safresh1use Test::More;
8*5759b3d2Safresh1plan tests => 42;
9*5759b3d2Safresh1
10*5759b3d2Safresh1my @ary;
11*5759b3d2Safresh1
12*5759b3d2Safresh1ok(defined &head, 'defined');
13*5759b3d2Safresh1ok(defined &tail, 'defined');
14*5759b3d2Safresh1
15*5759b3d2Safresh1@ary = head 1, ( 4, 5, 6 );
16*5759b3d2Safresh1is( scalar @ary, 1 );
17*5759b3d2Safresh1is( $ary[0], 4 );
18*5759b3d2Safresh1
19*5759b3d2Safresh1@ary = head 2, ( 4, 5, 6 );
20*5759b3d2Safresh1is( scalar @ary, 2 );
21*5759b3d2Safresh1is( $ary[0], 4 );
22*5759b3d2Safresh1is( $ary[1], 5 );
23*5759b3d2Safresh1
24*5759b3d2Safresh1@ary = head -1, ( 4, 5, 6 );
25*5759b3d2Safresh1is( scalar @ary, 2 );
26*5759b3d2Safresh1is( $ary[0], 4 );
27*5759b3d2Safresh1is( $ary[1], 5 );
28*5759b3d2Safresh1
29*5759b3d2Safresh1@ary = head -2, ( 4, 5, 6 );
30*5759b3d2Safresh1is( scalar @ary, 1 );
31*5759b3d2Safresh1is( $ary[0], 4 );
32*5759b3d2Safresh1
33*5759b3d2Safresh1@ary = head 999, ( 4, 5, 6 );
34*5759b3d2Safresh1is( scalar @ary, 3 );
35*5759b3d2Safresh1is( $ary[0], 4 );
36*5759b3d2Safresh1is( $ary[1], 5 );
37*5759b3d2Safresh1is( $ary[2], 6 );
38*5759b3d2Safresh1
39*5759b3d2Safresh1@ary = head 0, ( 4, 5, 6 );
40*5759b3d2Safresh1is( scalar @ary, 0 );
41*5759b3d2Safresh1
42*5759b3d2Safresh1@ary = head 0;
43*5759b3d2Safresh1is( scalar @ary, 0 );
44*5759b3d2Safresh1
45*5759b3d2Safresh1@ary = head 5;
46*5759b3d2Safresh1is( scalar @ary, 0 );
47*5759b3d2Safresh1
48*5759b3d2Safresh1@ary = head -3, ( 4, 5, 6 );
49*5759b3d2Safresh1is( scalar @ary, 0 );
50*5759b3d2Safresh1
51*5759b3d2Safresh1@ary = head -999, ( 4, 5, 6 );
52*5759b3d2Safresh1is( scalar @ary, 0 );
53*5759b3d2Safresh1
54*5759b3d2Safresh1eval '@ary = head';
55*5759b3d2Safresh1like( $@, qr{^Not enough arguments for List::Util::head} );
56*5759b3d2Safresh1
57*5759b3d2Safresh1@ary = head 4, ( 4, 5, 6 );
58*5759b3d2Safresh1is( scalar @ary, 3 );
59*5759b3d2Safresh1is( $ary[0], 4 );
60*5759b3d2Safresh1is( $ary[1], 5 );
61*5759b3d2Safresh1is( $ary[2], 6 );
62*5759b3d2Safresh1
63*5759b3d2Safresh1@ary = tail 1, ( 4, 5, 6 );
64*5759b3d2Safresh1is( scalar @ary, 1 );
65*5759b3d2Safresh1is( $ary[0], 6 );
66*5759b3d2Safresh1
67*5759b3d2Safresh1@ary = tail 2, ( 4, 5, 6 );
68*5759b3d2Safresh1is( scalar @ary, 2 );
69*5759b3d2Safresh1is( $ary[0], 5 );
70*5759b3d2Safresh1is( $ary[1], 6 );
71*5759b3d2Safresh1
72*5759b3d2Safresh1@ary = tail -1, ( 4, 5, 6 );
73*5759b3d2Safresh1is( scalar @ary, 2 );
74*5759b3d2Safresh1is( $ary[0], 5 );
75*5759b3d2Safresh1is( $ary[1], 6 );
76*5759b3d2Safresh1
77*5759b3d2Safresh1@ary = tail -2, ( 4, 5, 6 );
78*5759b3d2Safresh1is( scalar @ary, 1 );
79*5759b3d2Safresh1is( $ary[0], 6 );
80*5759b3d2Safresh1
81*5759b3d2Safresh1@ary = tail 0, ( 4, 5, 6 );
82*5759b3d2Safresh1is( scalar @ary, 0 );
83*5759b3d2Safresh1
84*5759b3d2Safresh1@ary = tail 0;
85*5759b3d2Safresh1is( scalar @ary, 0 );
86*5759b3d2Safresh1
87*5759b3d2Safresh1@ary = tail 5;
88*5759b3d2Safresh1is( scalar @ary, 0 );
89*5759b3d2Safresh1
90*5759b3d2Safresh1@ary = tail -3;
91*5759b3d2Safresh1is( scalar @ary, 0 );
92*5759b3d2Safresh1
93*5759b3d2Safresh1@ary = tail -999;
94*5759b3d2Safresh1is( scalar @ary, 0 );
95*5759b3d2Safresh1
96*5759b3d2Safresh1eval '@ary = tail';
97*5759b3d2Safresh1like( $@, qr{^Not enough arguments for List::Util::tail} );
98