import unittest
from SwingDemo import a2p, p2a, divBy8, squareColor, Chessboard, TestClick
import java.awt.Color;

class Test(unittest.TestCase):

    def test1(self):
        self.assertEqual((0, 7), a2p('a1'))
        
    def test2(self):
        self.assertEqual((7, 7), a2p('h1'))
        
    def test2a(self):
        self.assertEqual((7, 0), a2p('h8'))
        
    def test3(self):
        for x in range(8):
            for y in range(8):
                alg = p2a((x, y))
                self.assertEqual((x, y), a2p(alg))
                
    def test4(self):
        for x in range(24):
            self.assertTrue(divBy8(x) % 8 == 0)

    def test5(self):
        self.assertEqual(java.awt.Color.gray, squareColor('a1'))
        self.assertEqual(java.awt.Color.white, squareColor('a2'))
        self.assertEqual(java.awt.Color.white, squareColor('b1'))
        
    def runGame(self, clickList, record):
        board = Chessboard((450, 450))
        for (x,y) in clickList:
            board.storeClick(TestClick(x, y))
        self.assertEqual(record, board.getMoves())
        
    def testScholarsMate(self):
        self.runGame([(247, 369), (248, 249), (245, 81), (256, 191), (199, 429), (427, 201), (363, 34), (320, 136), (309, 414), (133, 246), (302, 139), (251, 255), (420, 193), (314, 88)], ['e4', 'e5', 'Qh5', 'Nf6', 'Bc4', 'Nxe4', 'Qxf7'])

    def testFoolsMate(self):
        self.runGame([(307, 368), (307, 321), (238, 78), (256, 206), (350, 370), (364, 256), (208, 26), (439, 246)], ['f3', 'e5', 'g4', 'Qh4'])
        
    def testTango1(self):
        self.runGame([(263, 359), (197, 382), (197, 382), (192, 258), (365, 13), (313, 161), (135, 362), (136, 249), (79, 32), (137, 135), (208, 261), (201, 183), (153, 152), (264, 207), (89, 358), (87, 300), (263, 98), (263, 145), (128, 414), (81, 360), (307, 40), (77, 238), (83, 414), (205, 363), (324, 144), (250, 255), (78, 344), (147, 435), (199, 39), (299, 138), (366, 421), (307, 291), (263, 191), (314, 313), (262, 354), (316, 289)], ['d4', 'Nf6', 'c4', 'Nc6', 'd5', 'Ne5', 'b3', 'e6', 'Bb2', 'Bb4', 'Nd2', 'Ne4', 'Bc1', 'Qf6', 'Nf3', 'Nxf3', 'exf3'])
                
if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()
