The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 20;

use NetHack::Monster::Spoiler;

my $archon = NetHack::Monster::Spoiler->lookup
    (glyph => 'A', color => 'magenta');

isa_ok($archon, 'NetHack::Monster::Spoiler', "Got an Archon spoiler");

is($archon->name, "Archon", "String property is set");

is($archon->wants_amulet, 0, "Archons do not want the Amulet");

is($archon->is_minion, 1, "but they are minions");


my $kobolds = NetHack::Monster::Spoiler->lookup(glyph => 'k');

ok(!defined($kobolds), "Scalar context k query fails (ambiguity)");

my $things = NetHack::Monster::Spoiler->lookup(glyph => '6');

ok(!defined($things), "Scalar context 6 query fails (nonexistance)");


my @kobolds = NetHack::Monster::Spoiler->lookup(glyph => 'k');

ok(@kobolds == 4, "Got 4 results from list context k query");

for my $k (0 .. 3) {
    isa_ok($kobolds[$k], 'NetHack::Monster::Spoiler',
        "And they're all spoilers");
    like($kobolds[$k]->name, qr/kobold/, "With kobold in the name");
    is($kobolds[$k]->glyph, 'k', "And k as a symbol");
}

@kobolds = sort { $a->name cmp $b->name } @kobolds;

is($kobolds[2]->color, "bright_blue", "Kobold shamans are bright blue");