"""Tests for parseHelpers module.""" import unittest from imago.data.enums import Player from imago.engine import parseHelpers TEST_BOARD_SIZE = 19 class TestParseHelpers(unittest.TestCase): """Test parseHelpers module.""" def testParseMove(self): """Test parsing of GtpMove""" wrongMoves = [ ["B"], ["A1"], ["B", "A1", "W"] ] for move in wrongMoves: self.assertRaises( RuntimeError, parseHelpers.parseMove, move, TEST_BOARD_SIZE ) parsedMove = parseHelpers.parseMove(["B", "t1"], TEST_BOARD_SIZE) targetMove = parseHelpers.GtpMove(Player.BLACK, [18, 18]) self.assertEqual(parsedMove.color, targetMove.color) self.assertEqual(parsedMove.vertex, targetMove.vertex) def testParseColor(self): """Test parsing of color""" self.assertEqual(parseHelpers.parseColor("b"), Player.BLACK) self.assertEqual(parseHelpers.parseColor("B"), Player.BLACK) self.assertEqual(parseHelpers.parseColor("w"), Player.WHITE) self.assertEqual(parseHelpers.parseColor("W"), Player.WHITE) self.assertRaises(RuntimeError, parseHelpers.parseColor, "bw") self.assertRaises(RuntimeError, parseHelpers.parseColor, "wb") def testParseVertexWrongInputs(self): """Test wrong inputs for parseVertex.""" inputs = ( "a", "1", "1a", "aa1", "a0", "u1", "a"+str(TEST_BOARD_SIZE+1) ) for text in inputs: self.assertRaises( RuntimeError, parseHelpers.parseVertex, text, TEST_BOARD_SIZE ) def testParseVertexCorrectInputs(self): """Test correct inputs and their resulting coordinates for parseVertex.""" self.assertEqual(parseHelpers.parseVertex( "a1", TEST_BOARD_SIZE), [18,0]) self.assertEqual(parseHelpers.parseVertex( "b1", TEST_BOARD_SIZE), [18,1]) self.assertEqual(parseHelpers.parseVertex( "a2", TEST_BOARD_SIZE), [17,0]) self.assertEqual(parseHelpers.parseVertex( "b2", TEST_BOARD_SIZE), [17,1]) self.assertEqual(parseHelpers.parseVertex( "T1", TEST_BOARD_SIZE), [18,18]) self.assertEqual(parseHelpers.parseVertex( "T19", TEST_BOARD_SIZE), [0,18]) self.assertEqual(parseHelpers.parseVertex( "A19", TEST_BOARD_SIZE), [0,0]) self.assertEqual(parseHelpers.parseVertex( "pass", TEST_BOARD_SIZE), "pass") def testVertexToString(self): """Test converting vertices to strings.""" self.assertEqual(parseHelpers.vertexToString([0,0], TEST_BOARD_SIZE), "A19") self.assertEqual(parseHelpers.vertexToString([1,0], TEST_BOARD_SIZE), "A18") self.assertEqual(parseHelpers.vertexToString([2,0], TEST_BOARD_SIZE), "A17") self.assertEqual(parseHelpers.vertexToString([0,1], TEST_BOARD_SIZE), "B19") self.assertEqual(parseHelpers.vertexToString([0,2], TEST_BOARD_SIZE), "C19") self.assertEqual(parseHelpers.vertexToString([0,18], TEST_BOARD_SIZE), "T19") self.assertEqual(parseHelpers.vertexToString([18,0], TEST_BOARD_SIZE), "A1") self.assertEqual(parseHelpers.vertexToString([18,18], TEST_BOARD_SIZE), "T1") self.assertEqual(parseHelpers.vertexToString("pass", TEST_BOARD_SIZE), "pass") wrongVertices = [ [-1,0], [0,-1], [-1,-1], [19,0], [0,19], [19,19], [0], [0,0,0] ] for vertex in wrongVertices: self.assertRaises( RuntimeError, parseHelpers.vertexToString, vertex, TEST_BOARD_SIZE ) if __name__ == '__main__': unittest.main()