Games-Tournament-Swiss

 view release on metacpan or  search on metacpan

t/preference.t  view on Meta::CPAN

#!/usr/bin/perl

use lib qw/t lib/;

use strict;
use warnings;
# use Games::Tournament::Swiss::Test -base; 
use Test::Base -base; 
use List::MoreUtils qw/any/;

use Games::Tournament::Contestant::Swiss::Preference;

filters qw/lines chomp/;
filters { input => [ qw/updatepref/ ], expected => [ qw/array/ ] };

plan tests => 1 * blocks;

run_is_deeply input => 'expected';

sub updatepref {
	my $sign = shift;
	my $difference = shift;
	my $oldRoles = shift;
	my @oldRoles = split /,/, $oldRoles;
	my $lastrole = pop @oldRoles;
	@oldRoles = grep { my $role = $_;
				any { $role eq $_ } qw/Black White/ } @oldRoles;
	my @lastTwo;
	if ( @oldRoles > 1 )
	{
		$lastTwo[1] = $oldRoles[-1];
		$lastTwo[0] = $oldRoles[-2];
	}
	elsif ( @oldRoles > 1 ) {
		$lastTwo[0] = $oldRoles[-1];
	}
	else { @lastTwo = (); }
	my $pref = Games::Tournament::Contestant::Swiss::Preference->new(
		sign => $sign, difference => $difference, lastTwo => \@lastTwo);
	$pref->update(  [ @oldRoles, $lastrole ] );
	my $lastTwo = join ',', @{ $pref->lastTwo };
	return [ $pref->role, $pref->strength, $lastTwo ];
}

__END__

=== http://chesschat.org/showthread.php?t=7139 Player 5
--- input
White
2
White,White,None
--- expected
Black
Absolute
White,White

=== http://chesschat.org/showthread.php?t=7139 Player 5 again
--- input
White
0
Black,White,None
--- expected
Black
Mild
Black,White

=== http://chesschat.org/showthread.php?t=7139 Player 6
--- input
Black
1
Black,None,Black
--- expected
White
Absolute
Black,Black

=== http://chesschat.org/showthread.php?t=7139 Player 6 again
--- input
White
1



( run in 0.825 second using v1.01-cache-2.11-cpan-5735350b133 )