use warnings; use strict; use Test; BEGIN { plan tests => 53 }; use Games::Chomp; ok(1); my $p = new Games::Chomp::Position; ok(defined $p); # check the compare method ok(0 == $p->compare([3], [3])); ok(0 == $p->compare([7,3,1], [7,3,1])); ok(0 == $p->compare([10,9,8,7], [10,9,8,7])); ok(not defined $p->compare([10,5,1], [8,5,3])); ok(not defined $p->compare([6,2], [4,3])); ok(not defined $p->compare([6,4], [5,3,1])); ok(1 == $p->compare([6], [4])); ok(1 == $p->compare([6,4], [6,3])); ok(1 == $p->compare([6,4], [5,4])); ok(1 == $p->compare([6,4], [5,3])); ok(-1 == $p->compare([3], [4])); ok(-1 == $p->compare([6,4], [6,5])); ok(-1 == $p->compare([3,1], [4,1])); ok(-1 == $p->compare([4,2], [5,3])); ok(0 == $p->compare([12,9,7], [12,9,7])); # Before seting the limits ok("0" eq join ",", $p->upper_limit_in_row_length); ok("0" eq join ",", $p->lower_limit_in_row_length); # after setting the limit ok("12,9,7" eq join ",", $p->upper_limit_in_row_length(12,9,7)); # check function before we set values ok("0" eq join ",", $p->row_length); ok("0" eq join ",", $p->conjugate); #warn "\nERROR: ", scalar($p->conjugate), "\n"; #warn "\nERROR: ", $p->conjugate(), "\n"; # set position and check if was set correctly $p->row_length(1); ok("1" eq join ",", $p->row_length); ok("1" eq join ",", $p->conjugate); $p->row_length(3,2); ok("3,2" eq join ",", $p->row_length); ok("2,1" eq join ",", $p->conjugate); $p->row_length(4,2,1); ok("1,1,2" eq join ",", $p->conjugate); $p->conjugate(7, 2, 3); ok("7,2,3" eq join ",", $p->conjugate); ok("12,9,7" eq join ",", $p->row_length); # if upper limit is at the current position return undef ok(not $p->next); ok("12,9,7" eq join ",", $p->row_length); #warn "\n", join(",",$p->row_length), "\n"; ok("12,9,8" eq join ",", $p->upper_limit_in_row_length(12,9,8)); ok($p->next); ok("8,8,8" eq join ",", $p->row_length); #warn "\n", join(",",$p->row_length), "\n"; ok($p->next); ok("9,8,8" eq join ",", $p->row_length); ok("10,8,8" eq join ",", $p->upper_limit_in_row_length(10,8,8)); ok($p->next); ok("10,8,8" eq join ",", $p->row_length); ok("10,9,8" eq join ",", $p->upper_limit_in_row_length(10,9,8)); ok($p->next); ok("9,9,8" eq join ",", $p->row_length); ok("6,4,2" eq join ",", $p->row_length(6,4,2)); ok("7,6,4" eq join ",", $p->upper_limit_in_row_length(7,6,4)); ok("6,3,2" eq join ",", $p->lower_limit_in_row_length(6,3,2)); ok($p->next); ok("7,4,2" eq join ",", $p->row_length); ok($p->next); ok("6,5,2" eq join ",", $p->row_length); #warn "\n", join(",",$p->row_length), "\n"; ok($p->next); ok("7,5,2" eq join ",", $p->row_length); ok($p->next); ok("6,6,2" eq join ",", $p->row_length);