The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use lib 't/lib';
use Test::NetHack::Item;

my $sack = NetHack::Item->new("a sack");
is($sack->weight, undef, "don't know the weight yet, because we don't know the contents");
$sack->contents_known(1);
is($sack->weight, 15, "the contents are known to be empty, so weight is the sack's weight");

$sack->add_item(NetHack::Item->new("a pearl ring"));
is($sack->weight, 18, "weight is sack's weight + contents' weight");

$sack->add_item(NetHack::Item->new("a gray stone"));
is($sack->weight, undef, "we don't know the sack's weight if we don't know the contents' weight");

my $boh = NetHack::Item->new("a bag of holding");
is($boh->weight, undef, "we don't know the weight yet");
$boh->contents_known(1);
is($boh->weight, 15, "boh weighs 15");

$boh->add_item(NetHack::Item->new("a pearl ring"));
is($boh->weight, undef, "we don't know the BUC of the boh so we don't know the weight");

$boh->is_cursed(1);
is($boh->weight, 21, "weight is 15 + ring(3)*2");
done_testing;