The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More tests => 2;
use Games::Mastermind::Cracker::Sequential;

# correct answer: BB
my @results = (
    [0, 0],
    [1, 0],
    [1, 0],
    [2, 0],
);

my @expected_guesses = qw/AA AB BA/;

my @guesses;

my $gmcs = Games::Mastermind::Cracker::Sequential->new(
    get_result => sub { push @guesses, pop; @{ shift @results } },
    holes      => 2,
    pegs       => [qw/A B/],
);

my $answer = $gmcs->crack;

is($answer, 'BB', "BB found.");
is_deeply(\@guesses, \@expected_guesses, "Guesses were sequential, and stopped after the penultimate possibility.");