package org.ggp.base.apps.benchmark;

/**
 * PlayerTesterCases is a suite of test cases for the PlayerTester.
 *
 * @author Sam Schreiber
 */
public class PlayerTesterCases {
    public static final PlayerTester.TestCase[] TEST_CASES = new PlayerTester.TestCase[] {
            // Cases from the EndgameCaseGenerator
            new PlayerTester.TestCase("Endgame", "ticTacToe", 0, 15, 5, "( ( cell 2 1 b ) ( control xplayer ) ( cell 1 2 x ) ( cell 1 1 o ) ( cell 3 2 b ) ( cell 2 3 x ) ( cell 3 3 b ) ( cell 3 1 b ) ( cell 1 3 b ) ( cell 2 2 o ) )", new String[] {"( mark 3 3 )", }),
            new PlayerTester.TestCase("Endgame", "ticTacToe", 0, 15, 5, "( ( control xplayer ) ( cell 1 1 x ) ( cell 1 3 b ) ( cell 3 2 x ) ( cell 3 3 o ) ( cell 1 2 b ) ( cell 2 2 b ) ( cell 2 3 o ) ( cell 3 1 o ) ( cell 2 1 x ) )", new String[] {"( mark 1 3 )", }),
            new PlayerTester.TestCase("Endgame", "ticTacToe", 0, 15, 5, "( ( cell 2 1 b ) ( cell 3 1 b ) ( cell 2 2 o ) ( cell 2 3 b ) ( cell 3 3 o ) ( cell 1 2 x ) ( cell 1 3 x ) ( cell 3 2 b ) ( cell 1 1 b ) ( control xplayer ) )", new String[] {"( mark 1 1 )", }),
            new PlayerTester.TestCase("Endgame", "ticTacToe", 0, 15, 5, "( ( cell 2 1 b ) ( cell 2 2 b ) ( cell 1 1 x ) ( cell 2 3 o ) ( cell 3 1 b ) ( cell 1 2 b ) ( cell 3 2 b ) ( control xplayer ) ( cell 1 3 b ) ( cell 3 3 b ) )", new String[] {"( mark 3 1 )", "( mark 1 3 )", "( mark 2 2 )", }),
            new PlayerTester.TestCase("Endgame", "ticTacToe", 0, 15, 5, "( ( cell 3 1 b ) ( cell 3 3 x ) ( cell 3 2 b ) ( cell 2 1 b ) ( cell 1 3 o ) ( cell 2 2 b ) ( cell 1 2 b ) ( cell 2 3 b ) ( control xplayer ) ( cell 1 1 b ) )", new String[] {"( mark 3 1 )", "( mark 1 1 )", "( mark 3 2 )", }),
            new PlayerTester.TestCase("Endgame", "connectFour", 0, 15, 5, "( ( cell 5 2 red ) ( cell 6 2 black ) ( cell 4 1 red ) ( cell 3 4 red ) ( cell 1 2 black ) ( cell 3 3 black ) ( cell 6 4 black ) ( cell 1 3 red ) ( cell 2 1 black ) ( cell 7 1 red ) ( cell 3 2 black ) ( cell 8 1 red ) ( cell 6 5 black ) ( cell 1 1 red ) ( cell 5 1 black ) ( cell 1 4 black ) ( control red ) ( cell 3 1 red ) ( cell 2 2 red ) ( cell 6 1 red ) ( cell 4 2 black ) ( cell 6 6 black ) ( cell 6 3 red ) )", new String[] {"( drop 4 )", "( drop 5 )", "( drop 7 )", "( drop 8 )", }),
            new PlayerTester.TestCase("Endgame", "connectFour", 0, 15, 5, "( ( cell 1 4 black ) ( cell 8 3 red ) ( cell 5 1 black ) ( cell 3 2 black ) ( cell 2 4 red ) ( cell 3 3 black ) ( cell 2 2 black ) ( cell 2 1 black ) ( cell 1 2 red ) ( cell 8 1 black ) ( cell 4 1 red ) ( cell 6 1 red ) ( cell 4 2 red ) ( cell 1 1 red ) ( cell 3 1 red ) ( cell 1 3 black ) ( cell 6 2 black ) ( cell 5 3 red ) ( cell 8 2 red ) ( cell 5 4 black ) ( control red ) ( cell 5 2 red ) ( cell 2 3 black ) )", new String[] {"( drop 4 )", }),
            new PlayerTester.TestCase("Endgame", "qyshinsu", 0, 15, 5, "( ( position 4 1 ) ( legalPlayLoc 2 ) ( control black ) ( position 2 empty ) ( owner 5 black ) ( position 3 5 ) ( position 12 2 ) ( owner 11 black ) ( position 6 empty ) ( position 9 empty ) ( position 8 empty ) ( position 1 empty ) ( position 5 1 ) ( redPlayerRemovedLastTurn 4 6 ) ( blackPlayerRemovedLastTurn 0 7 ) ( step 33 ) ( position 10 0 ) ( owner 4 red ) ( owner 3 black ) ( position 7 empty ) ( owner 10 red ) ( owner 12 black ) ( legalPlayLoc 10 ) ( position 11 3 ) )", new String[] {"( add 2 3 )", "( add 2 4 )", "( add 2 2 )", }),
            new PlayerTester.TestCase("Endgame", "pentago", 0, 15, 5, "( ( rotateControl red ) ( cellHolds 4 3 3 black ) ( cellHolds 3 2 2 black ) ( cellHolds 2 3 1 red ) ( cellHolds 1 3 1 red ) ( cellHolds 2 2 2 black ) ( cellHolds 2 1 2 red ) ( cellHolds 2 2 3 red ) ( cellHolds 2 3 3 black ) ( cellHolds 4 1 2 red ) ( cellHolds 4 1 3 red ) ( cellHolds 3 3 2 red ) ( cellHolds 1 2 1 red ) ( cellHolds 4 3 2 red ) ( cellHolds 4 2 3 red ) ( cellHolds 2 3 2 red ) ( cellHolds 1 2 3 black ) ( cellHolds 4 2 2 black ) ( cellHolds 2 2 1 black ) ( cellHolds 1 1 3 black ) ( cellHolds 1 3 2 red ) ( cellHolds 4 3 1 black ) ( cellHolds 3 2 3 red ) ( cellHolds 3 2 1 black ) ( cellHolds 3 3 1 black ) ( cellHolds 1 2 2 black ) ( cellHolds 2 1 1 red ) ( cellHolds 3 3 3 black ) ( cellHolds 3 1 3 black ) ( cellHolds 2 1 3 red ) ( cellHolds 1 3 3 red ) ( cellHolds 1 1 2 black ) )", new String[] {"( rotate 3 clockwise )", "( rotate 1 clockwise )", "( rotate 4 clockwise )", }),
            new PlayerTester.TestCase("Endgame", "cittaceot", 0, 15, 5, "( ( cell 3 1 x ) ( cell 2 3 b ) ( cell 5 5 x ) ( cell 4 5 b ) ( cell 3 4 o ) ( cell 2 5 b ) ( cell 5 3 b ) ( control xplayer ) ( cell 3 3 x ) ( cell 1 3 o ) ( cell 4 4 o ) ( cell 3 5 b ) ( cell 2 1 o ) ( cell 5 2 b ) ( cell 2 4 x ) ( cell 4 2 o ) ( cell 2 2 o ) ( cell 4 3 x ) ( cell 5 1 x ) ( cell 4 1 b ) ( cell 1 4 x ) ( cell 3 2 o ) ( cell 1 5 x ) ( cell 5 4 o ) ( cell 1 1 o ) ( cell 1 2 x ) )", new String[] {"( mark 2 3 )", }),
            new PlayerTester.TestCase("Endgame", "englishDraughts", 0, 15, 5, "( ( cell h 3 black king ) ( cell g 4 black king ) ( cell g 6 white king ) ( step 18 ) ( lastToMove black ) ( cell b 3 black king ) ( cell f 7 white king ) )", new String[] {"( move g 6 h 5 )", "( move f 7 e 8 )", "( move f 7 e 6 )", "( move f 7 g 8 )", "( move g 6 h 7 )", }),
            new PlayerTester.TestCase("Endgame", "nineBoardTicTacToe", 0, 15, 5, "( ( mark 3 3 2 3 x ) ( mark 2 3 1 1 o ) ( mark 1 1 3 2 o ) ( mark 2 2 2 1 o ) ( mark 3 3 1 3 o ) ( mark 2 3 1 2 o ) ( mark 1 2 1 1 o ) ( mark 1 3 2 2 x ) ( mark 1 3 3 3 o ) ( mark 1 1 1 3 x ) ( mark 2 2 2 3 o ) ( mark 3 1 3 2 x ) ( mark 2 1 3 3 x ) ( mark 3 1 1 1 x ) ( mark 3 2 2 2 x ) ( mark 1 1 2 3 x ) ( mark 1 3 1 2 x ) ( mark 2 1 3 2 x ) ( control xPlayer ) ( mark 2 3 2 1 o ) ( mark 2 3 2 3 x ) ( mark 1 2 2 2 x ) ( mark 2 2 3 1 o ) ( mark 3 2 3 1 o ) ( currentBoard 1 1 ) ( mark 3 2 1 1 o ) )", new String[] {"( play 1 1 3 3 x )", "( play 1 1 1 1 x )", "( play 1 1 1 2 x )", "( play 1 1 2 1 x )", "( play 1 1 3 1 x )", }),
            new PlayerTester.TestCase("Endgame", "2pttc", 0, 15, 5, "( ( cell 4 6 blue ) ( control red ) ( cell 3 4 red ) ( cell 7 4 blue ) ( cell 6 2 red ) ( step 27 ) ( cell 4 3 blue ) ( cell 5 4 blue ) ( cell 3 3 red ) ( cell 5 3 red ) ( cell 4 5 blue ) )", new String[] {"( move 1 4 3 5 )", "( move 3 4 4 3 )", }),
            new PlayerTester.TestCase("Endgame", "breakthroughSmall", 0, 15, 5, "( ( cell 5 4 black ) ( control white ) ( cell 4 1 white ) ( cell 2 4 white ) ( cell 5 3 white ) ( cell 3 2 black ) ( cell 2 1 white ) ( cell 3 5 black ) ( cell 6 3 white ) ( cell 1 5 white ) ( cell 2 2 black ) ( cell 6 5 white ) ( cell 1 4 black ) ( cell 1 6 black ) ( cell 2 5 black ) ( cell 4 2 white ) ( cell 4 6 black ) ( cell 1 1 white ) ( cell 4 4 white ) )", new String[] {"( move 1 5 2 6 )", "( move 6 5 5 6 )", "( move 6 5 6 6 )", }),
            new PlayerTester.TestCase("Endgame", "dotsAndBoxes", 0, 15, 5, "( ( line 4 3 5 3 ) ( line 2 4 2 5 ) ( line 3 1 3 2 ) ( line 1 2 1 3 ) ( line 3 4 3 5 ) ( line 1 1 2 1 ) ( line 1 5 1 6 ) ( line 5 1 5 2 ) ( line 4 1 5 1 ) ( line 1 4 2 4 ) ( line 5 2 5 3 ) ( control xplayer ) ( box_count xplayer 11 ) ( line 5 5 6 5 ) ( line 6 4 6 5 ) ( line 5 2 6 2 ) ( line 6 1 6 2 ) ( line 3 2 3 3 ) ( line 5 3 5 4 ) ( line 1 6 2 6 ) ( line 2 1 2 2 ) ( line 5 4 6 4 ) ( line 1 2 2 2 ) ( line 6 3 6 4 ) ( line 4 1 4 2 ) ( line 3 2 4 2 ) ( line 3 5 4 5 ) ( line 1 3 2 3 ) ( line 6 2 6 3 ) ( line 5 3 6 3 ) ( line 4 4 4 5 ) ( line 2 2 3 2 ) ( line 2 4 3 4 ) ( line 1 5 2 5 ) ( line 3 3 4 3 ) ( line 3 3 3 4 ) ( line 4 2 5 2 ) ( line 2 3 2 4 ) ( line 2 2 2 3 ) ( line 5 4 5 5 ) ( box_count oplayer 10 ) ( line 5 1 6 1 ) ( line 5 6 6 6 ) ( line 3 1 4 1 ) ( line 4 3 4 4 ) ( line 5 5 5 6 ) ( line 2 5 3 5 ) ( line 2 3 3 3 ) ( line 3 6 4 6 ) ( line 4 2 4 3 ) ( line 3 5 3 6 ) ( line 1 3 1 4 ) ( line 2 5 2 6 ) ( line 4 4 5 4 ) ( line 4 5 5 5 ) ( line 2 6 3 6 ) ( line 6 5 6 6 ) ( line 2 1 3 1 ) ( line 1 4 1 5 ) ( line 1 1 1 2 ) )", new String[] {"( draw 4 5 4 6 )", "( draw 3 4 4 4 )", }),
            new PlayerTester.TestCase("Endgame", "dotsAndBoxes", 0, 15, 5, "( ( line 3 4 4 4 ) ( line 4 4 5 4 ) ( line 5 4 5 5 ) ( line 2 4 2 5 ) ( line 5 3 6 3 ) ( line 2 3 3 3 ) ( line 1 1 1 2 ) ( line 3 2 3 3 ) ( line 3 5 3 6 ) ( line 2 1 2 2 ) ( line 6 1 6 2 ) ( control xplayer ) ( line 1 6 2 6 ) ( line 1 3 2 3 ) ( line 4 1 5 1 ) ( line 6 5 6 6 ) ( line 1 2 1 3 ) ( line 5 1 5 2 ) ( line 3 5 4 5 ) ( line 5 2 6 2 ) ( line 5 6 6 6 ) ( line 3 4 3 5 ) ( line 4 2 5 2 ) ( line 3 6 4 6 ) ( box_count oplayer 9 ) ( line 5 5 6 5 ) ( line 1 5 1 6 ) ( line 4 2 4 3 ) ( line 5 2 5 3 ) ( line 1 2 2 2 ) ( line 6 3 6 4 ) ( line 4 4 4 5 ) ( line 2 2 3 2 ) ( line 3 3 4 3 ) ( line 3 2 4 2 ) ( line 5 3 5 4 ) ( line 4 6 5 6 ) ( line 4 3 4 4 ) ( box_count xplayer 11 ) ( line 2 5 2 6 ) ( line 4 5 4 6 ) ( line 2 6 3 6 ) ( line 2 4 3 4 ) ( line 2 5 3 5 ) ( line 2 3 2 4 ) ( line 1 3 1 4 ) ( line 5 4 6 4 ) ( line 4 3 5 3 ) ( line 1 5 2 5 ) ( line 3 3 3 4 ) ( line 2 1 3 1 ) ( line 3 1 3 2 ) ( line 2 2 2 3 ) ( line 5 1 6 1 ) ( line 5 5 5 6 ) ( line 4 5 5 5 ) ( line 3 1 4 1 ) ( line 1 1 2 1 ) ( line 6 2 6 3 ) )", new String[] {"( draw 1 4 2 4 )", "( draw 6 4 6 5 )", "( draw 4 1 4 2 )", }),
            new PlayerTester.TestCase("Endgame", "ticTacToeLarge", 0, 15, 5, "( ( mark 1 2 x ) ( mark 4 3 x ) ( mark 2 5 x ) ( mark 2 4 o ) ( mark 3 4 o ) ( mark 2 3 o ) ( control xPlayer ) ( mark 2 1 o ) ( mark 4 2 x ) ( mark 5 4 x ) ( mark 1 3 x ) ( mark 5 3 o ) ( mark 3 2 o ) ( mark 3 5 o ) ( mark 1 1 o ) ( mark 4 4 x ) ( mark 4 5 x ) ( mark 5 2 o ) ( mark 1 5 x ) )", new String[] {"( play 4 1 x )", }),
            new PlayerTester.TestCase("Endgame", "connectFourLarge", 0, 15, 5, "( ( cell 2 1 black ) ( cell 1 4 red ) ( cell 12 3 black ) ( cell 2 2 black ) ( cell 7 2 red ) ( cell 6 3 black ) ( cell 4 2 red ) ( cell 2 3 red ) ( cell 7 1 black ) ( cell 10 2 black ) ( cell 1 1 black ) ( cell 9 4 red ) ( cell 5 2 black ) ( cell 9 3 black ) ( cell 5 1 black ) ( control red ) ( cell 5 3 black ) ( cell 12 2 black ) ( cell 9 2 red ) ( cell 2 5 red ) ( cell 1 3 red ) ( cell 12 1 black ) ( cell 4 3 red ) ( cell 9 1 red ) ( cell 6 4 red ) ( cell 1 5 black ) ( cell 4 1 black ) ( cell 6 2 red ) ( cell 2 4 red ) ( cell 6 1 red ) ( cell 11 1 black ) ( cell 1 6 black ) ( cell 10 1 red ) ( cell 1 2 red ) ( cell 4 4 red ) )", new String[] {"( drop 4 )", "( drop 2 )", }),
            // Converted cases from Sancho
            new PlayerTester.TestCase("Sancho", "breakthroughWalls", 0, 15, 5, "( ( cellHolds 4 8 black ) ( cellHolds 3 3 white ) ( cellHolds 2 2 white ) ( cellHolds 5 1 white ) ( cellHolds 4 7 black ) ( cellHolds 1 8 black ) ( cellHolds 8 8 black ) ( control white ) ( cellHolds 8 7 black ) ( cellHolds 5 4 black ) ( cellHolds 5 8 black ) ( cellHolds 2 7 black ) ( cellHolds 7 7 black ) ( cellHolds 4 5 white ) ( cellHolds 7 1 white ) ( cellHolds 2 5 white ) ( cellHolds 2 6 white ) ( cellHolds 2 4 white ) ( cellHolds 3 5 black ) ( cellHolds 3 4 white ) ( cellHolds 7 8 black ) ( cellHolds 8 1 white ) ( cellHolds 6 4 white ) ( cellHolds 8 2 white ) ( cellHolds 6 2 white ) ( cellHolds 7 2 black ) ( cellHolds 7 3 white ) ( cellHolds 6 1 white ) )", new String[] { "( move 8 1 7 2 )", "( move 6 1 7 2 )", }),
            new PlayerTester.TestCase("Sancho", "3pConnectFour", 1, 15, 5, "( ( cell 4 2 red ) ( cell 3 1 blue ) ( cell 8 2 blue ) ( control yellow ) ( cell 1 1 yellow ) ( cell 4 3 yellow ) ( cell 3 2 red ) ( cell 2 1 blue ) ( cell 4 1 yellow ) ( cell 8 1 red ) ( cell 2 2 red ) )", new String[] { "( drop 1 )", }),
            new PlayerTester.TestCase("Sancho", "3pConnectFour", 1, 15, 5, "( ( cell 7 1 red ) ( cell 4 2 blue ) ( cell 7 2 red ) ( cell 3 1 yellow ) ( cell 7 3 red ) ( cell 4 1 yellow ) ( control yellow ) ( cell 8 1 blue ) )", new String[] { "( drop 7 )", }),
            new PlayerTester.TestCase("Sancho", "2pffa", 0, 15, 5, "( ( cell 5 3 blue ) ( step 25 ) ( cell 2 2 red ) ( cell 5 5 blue ) ( capture blue 4 ) ( cell 1 4 red ) ( cell 7 4 blue ) ( capture red 4 ) ( cell 3 5 red ) ( control red ) )", new String[] { "( move 1 4 3 3 )", }),
            new PlayerTester.TestCase("Sancho", "2pffa", 0, 15, 5, "( ( cell 2 2 red ) ( control red ) ( cell 3 5 red ) ( cell 1 4 red ) ( step 25 ) ( cell 2 6 red ) ( cell 7 4 blue ) ( capture red 3 ) ( capture blue 5 ) ( cell 3 3 blue ) )", new String[] { "( move 2 2 3 3 )", }),
            new PlayerTester.TestCase("Sancho", "2pffa", 0, 15, 5, "( ( capture blue 0 ) ( cell 2 2 red ) ( cell 4 5 blue ) ( control red ) ( cell 1 4 red ) ( cell 5 3 blue ) ( cell 3 3 red ) ( cell 2 6 red ) ( cell 7 4 blue ) ( step 7 ) ( capture red 0 ) )", new String[] { "( move 1 4 3 5 )", "(  move 2 2 4 3 )", }),
            new PlayerTester.TestCase("Sancho", "escortLatch", 1, 15, 5, "( ( cell a 2 wp ) ( cell e 4 wp ) ( cell b 2 wp ) ( cell h 7 bp ) ( cell g 2 wp ) ( cell d 7 bp ) ( cell c 3 wp ) ( cell f 7 bp ) ( cell a 7 bp ) ( cell c 5 bp ) ( cell c 2 wp ) ( cell e 5 bp ) ( cell g 7 bp ) ( cell e 6 bk ) ( cell d 5 bp ) ( cell g 3 wp ) ( step 18 ) ( cell f 2 wp ) whiteKingCaptured ( control black ) )", new String[] { "( move h 7 g 6 )", "( move c 5 d 4 )", "( move d 7 c 6 )", "( move e 5 f 4 )", "( move f 7 g 6 )", "( move f 7 f 6 )", "( move h 7 h 6 )", "( move g 7 h 6 )", "( move d 5 d 4 )", "( move a 7 a 6 )", "( move d 7 d 6 )", "( move a 7 b 6 )", "( move c 5 b 4 )", "( move g 7 f 6 )", "( move e 5 d 4 )", "( move g 7 g 6 )", "( move d 5 c 4 )", "( move c 5 c 4 )", "( move e 6 f 6 )", "( move e 6 d 6 )", "( move d 5 e 4 )", }),
            new PlayerTester.TestCase("Sancho", "2pffa", 0, 15, 5, "( ( cell 1 4 red ) ( cell 5 5 blue ) ( capture red 0 ) ( cell 3 3 red ) ( cell 7 4 blue ) ( control red ) ( step 3 ) ( capture blue 0 ) )", new String[] { "( move 1 4 3 5 )", }),
            new PlayerTester.TestCase("Sancho", "2pttc", 0, 15, 5, "( ( cell 6 6 blue ) ( cell 5 3 blue ) ( cell 3 5 red ) ( cell 1 4 red ) ( cell 3 3 red ) ( cell 5 5 blue ) ( cell 7 4 blue ) ( step 7 ) ( control red ) ( cell 2 2 red ) )", new String[] { "( move 2 2 3 4 )", }),
            new PlayerTester.TestCase("Sancho", "4pffa", 3, 15, 5, "( ( cell 4 7 green ) ( capture blue 0 ) ( cell 7 4 blue ) ( cell 4 1 yellow ) ( cell 3 3 yellow ) ( capture red 1 ) ( cell 6 2 red ) ( step 36 ) ( cell 3 2 yellow ) ( capture yellow 1 ) ( cell 1 4 red ) ( control green ) ( cell 4 5 red ) ( cell 2 2 yellow ) ( capture green 6 ) ( cell 5 3 blue ) ( cell 3 4 green ) )", new String[] { "( move 3 4 3 3 )", "( move 3 4 4 5 )", }),
    };
}