# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
use strict;
BEGIN { $^W = 1 }
######################### We start with some black magic to print on failure.
BEGIN { $| = 1; print "1..17\n"; }
my $loaded;
END {print "not ok 1\n" unless $loaded;}
use List::Permutor;
$loaded = 1;
print "ok 1\n";
######################### End of black magic.
{
my $perm = new List::Permutor qw/ fred barney betty /;
my @set = $perm->next;
print "# @set.\nnot " unless "@set" eq "fred barney betty";
print "ok 2\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "fred betty barney";
print "ok 3\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "barney fred betty";
print "ok 4\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "barney betty fred";
print "ok 5\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "betty fred barney";
print "ok 6\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "betty barney fred";
print "ok 7\n";
@set = $perm->next;
print "# @set.\nnot " unless "@set" eq "";
print "ok 8\n";
}
{
my $perm = new List::Permutor 1..5;
my %seen;
while (my $set = join '', $perm->next) {
if ($seen{$set}++) {
print "# Dup: $set\nnot ";
last;
}
last if 1000 < keys %seen; # In case of infinite loop
}
print "ok 9\n";
my $count = keys %seen;
print "# Count was $count\nnot " unless $count == 120;
print "ok 10\n";
}
{
my $perm = new List::Permutor;
my @list = $perm->next;
print "not " if @list;
print "ok 11\n";
}
{
my $perm = new List::Permutor 1..3;
my @list = $perm->peek;
print "not " unless "@list" eq "1 2 3";
print "ok 12\n";
for (1..5) {
$perm->next;
}
@list = $perm->peek;
print "not " unless "@list" eq "3 2 1";
print "ok 13\n";
$perm->next;
@list = $perm->peek;
print "not " if @list;
print "ok 14\n";
}
{
my $perm = new List::Permutor 1..3;
$perm->next;
$perm->reset;
my @list = $perm->peek;
print "not " unless "@list" eq "1 2 3";
print "ok 15\n";
for (1..6) {
$perm->next;
}
@list = $perm->peek;
print "not " if @list;
print "ok 16\n";
$perm->reset;
@list = $perm->peek;
print "not " unless "@list" eq "1 2 3";
print "ok 17\n";
}