#!/usr/bin/perl use strict; use warnings; use Test::More tests => 4; my @list1 = rand_list((rand() * 100)); my @list2 = rand_list((rand() * 100)); my @list3 = rand_list((rand() * 100)); # length(append(L1, L2)) = length(L1) + length(L2) cmp_ok( len(append(@list1, @list2)), '==', (len(@list1) + len(@list2)), '... length(append(L1, L2)) = length(L1) + length(L2)'); # reverse(append(L1, L2)) = append(reverse(L2), reverse(L1)) is_deeply( [ rev(append(@list1, @list2)) ], [ append(rev(@list2), rev(@list1)) ], '... reverse(append(L1, L2)) = append(reverse(L2), reverse(L1))'); # append(L1, append(L2, L3)) = append(append(L1, L2), L3) is_deeply( [ append(@list1, append(@list2, @list3)) ], [ append(append(@list1, @list2), @list3) ], '... append(L1, append(L2, L3)) = append(append(L1, L2), L3)'); # reverse(reverse(L1)) = L1 is_deeply( [ rev(rev(@list1)) ], [ @list1 ], '... reverse(reverse(L1)) = L1'); # --------------------------------------------- sub rand_list { my ($num_items) = @_; return map { (rand() * 100) % $num_items } 0 .. $num_items; } sub len { my @list = @_; return scalar @list; } sub append { my (@combined) = @_; return @combined; } sub rev { my @list = @_; return reverse @list; } 1;