# Test Games::Chess constants and functions (-*- cperl -*-) BEGIN { $| = 1; print "1..2\n"; } END {print "not ok 1\n" unless $loaded;} use Games::Chess qw(:constants :functions debug); debug(1); $loaded = 1; print "ok 1\n"; use strict; use UNIVERSAL 'isa'; $^W = 1; my $n = 1; my $success; sub do_test (&) { my ($test) = @_; ++ $n; $success = 1; &$test; print 'not ' unless $success; print "ok $n\n"; } sub fail { my ($mesg) = @_; print STDERR $mesg, "\n"; $success = 0; } # Test algebraic_to_xy, xy_to_algebraic, xy_valid do_test { my @squares = qw(a1 0 0 a2 0 1 a3 0 2 a4 0 3 a5 0 4 a6 0 5 a7 0 6 a8 0 7 b1 1 0 b2 1 1 b3 1 2 b4 1 3 b5 1 4 b6 1 5 b7 1 6 b8 1 7 c1 2 0 c2 2 1 c3 2 2 c4 2 3 c5 2 4 c6 2 5 c7 2 6 c8 2 7 d1 3 0 d2 3 1 d3 3 2 d4 3 3 d5 3 4 d6 3 5 d7 3 6 d8 3 7 e1 4 0 e2 4 1 e3 4 2 e4 4 3 e5 4 4 e6 4 5 e7 4 6 e8 4 7 f1 5 0 f2 5 1 f3 5 2 f4 5 3 f5 5 4 f6 5 5 f7 5 6 f8 5 7 g1 6 0 g2 6 1 g3 6 2 g4 6 3 g5 6 4 g6 6 5 g7 6 6 g8 6 7 h1 7 0 h2 7 1 h3 7 2 h4 7 3 h5 7 4 h6 7 5 h7 7 6 h8 7 7); my @non_squares = qw(a0 a9 @1 @8 h0 h9 i1 i8 A1 A8 H1 H8); while (@squares) { my ($sq,$x,$y) = splice @squares, 0, 3; my $SQ = xy_to_algebraic($x,$y); $sq eq $SQ or fail("xy_to_algebraic($x,$y) = $SQ (should be $sq)"); my ($X,$Y) = algebraic_to_xy($sq); $x == $X and $y == $Y or fail("algebraic_to_xy($sq) = $X,$Y (should be $x,$y)"); my $v = xy_valid($x,$y); defined $v and $v == 1 or fail("xy_valid($x,$y) is $v (should be 1)"); } local $Games::Chess::DEBUG = 0; foreach (@non_squares) { my @sq = algebraic_to_xy($_); @sq == 0 or fail("algebraic_to_xy($_) is (@sq) (should be none)"); } foreach (0 .. 100) { my ($x,$y) = (rand(1000)-500,rand(1000)-500); next if $x==int $x and $y==int $y and 0<=$x and $x<8 and 0<=$y and $y<8; my $sq = xy_to_algebraic($x,$y); not defined $sq or fail("xy_to_algebraic($x,$y) = $sq (should be undef)"); my $v = xy_valid($x,$y); not defined $v or fail("xy_valid($x,$y) is $v (should be undef)"); } };