c:\@Work\Perl\monks>perl use strict; use warnings; use Test::More 'no_plan'; use Test::NoWarnings; note "add more test cases; it's easy -- and fun!"; my @Tests = ( 'edge cases: drop all, none, nothing matches', [ [ qw(red green blue yellow pink purple brown) ], # input set [ qw(red green blue yellow pink purple brown) ], # drop these [ ], # expected output ], [ [ qw(red green blue yellow pink purple brown) ], [ ], [ qw(red green blue yellow pink purple brown) ], ], [ [ qw(red green blue yellow pink purple brown) ], [ qw(foo bar) ], [ qw(red green blue yellow pink purple brown) ], ], 'degenerate cases: empty input', [ [ ], [ qw(red green blue yellow pink purple brown) ], [ ], ], [ [ ], [ ], [ ], ], 'normal cases', [ [ qw(red green blue yellow pink purple brown) ], [ qw(red ) ], [ qw( green blue yellow pink purple brown) ], ], [ [ qw(red green blue yellow pink purple brown) ], [ qw( brown) ], [ qw(red green blue yellow pink purple ) ], ], [ [ qw(red green blue yellow pink purple brown) ], [ qw( pink purple ) ], [ qw(red green blue yellow brown) ], ], ); VECTOR: for my $ar_vector (@Tests) { if (not ref $ar_vector) { note $ar_vector; next VECTOR; } my ($ar_input, $ar_drop, $ar_expected) = @$ar_vector; my %to_be_dropped = map { $_ => 1 } @$ar_drop; my @output = grep !$to_be_dropped{$_}, @$ar_input; is_deeply \@output, $ar_expected, "dropped: (@$ar_drop)"; } # end for VECTOR done_testing; exit; # define test/support functions after exit (why?) # functions under test (if any), support subroutines ################ # none for now __END__ # add more test cases; it's easy -- and fun! # edge cases: drop all, none, nothing matches ok 1 - dropped: (red green blue yellow pink purple brown) ok 2 - dropped: () ok 3 - dropped: (foo bar) # degenerate cases: empty input ok 4 - dropped: (red green blue yellow pink purple brown) ok 5 - dropped: () # normal cases ok 6 - dropped: (red) ok 7 - dropped: (brown) ok 8 - dropped: (pink purple) 1..8 ok 9 - no warnings 1..9