Algorithm-Knap01DP
view release on metacpan or search on metacpan
t/01alltests.t view on Meta::CPAN
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Algorithm-Knap01DP.t'
#########################
use strict;
use Test::More tests => 1 + # load module
5*2 + # 2*@inputfiles
1 + # different sizes
2 # random
;
BEGIN { use_ok('Algorithm::Knap01DP'); }
### main
my @inputfiles = qw/knap21.dat knap22.dat knap23.dat knap25.dat knapanderson.dat/;
my @sol = (280, 107, 150, 900, 30);
my $knap21 = ['102', [ '2', '20', '20', '30', '40', '30', '60', '10' ],
[ '15', '100', '90', '60', '40', '15', '10', '1' ]];
my $knap22 = ['50', [ '31', '10', '20', '19', '4', '3', '6' ],
[ '70', '20', '39', '37', '7', '5', '10' ]];
my $knap23 = ['190', [ '56', '59', '80', '64', '75', '17' ],
[ '50', '50', '64', '46', '50', '5' ]];
my $knap25 = ['104', [ '25', '35', '45', '5', '25', '3', '2', '2' ],
[ '350', '400', '450', '20', '70', '8', '5', '5' ]];
my $knapAnderson = [30, [14, 5, 2, 11, 3, 8], [14, 5, 2, 11, 3, 8]];
my $knapsackproblem = [$knap21, $knap22, $knap23, $knap25, $knapAnderson];
my $i = 0;
my $knap;
# Now 2*@inputfiles = 10 tests
for my $file (@inputfiles) {
$knap = Algorithm::Knap01DP->ReadKnap((-e "t/$file")?"t/$file":$file);
is_deeply($knapsackproblem->[$i],
[$knap->{capacity}, $knap->{weights}, $knap->{profits}],
"ReadKnap $file");
$knap->Knap01DP();
is($sol[$i++], $knap->{tableval}[-1][-1], "Knap01DP $file");
$knap->solutions();
$knap->ShowResults();
}
( run in 0.231 second using v1.01-cache-2.11-cpan-4d50c553e7e )