def test_getValue(self): x = Board() x.data = np.array([['B'] * 8] * 8) r = np.random.choice(64, 5, replace=False) for i in r: x.data[i // 8, i % 8] = 'W' for i, a in enumerate(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']): for j, b in enumerate(['1', '2', '3', '4', '5', '6', '7', '8']): if i + 8 * j in r: self.assertEqual(x.getValue(a + b), 'W') else: self.assertEqual(x.getValue(a + b), 'B')
def test_getResult(self): x = Board() x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']]) self.assertEqual(x.getResult(), (20, 7))
def test_place(self): x = Board() y = Board() x.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'], ['W', 'B', 'B', 'E', 'W', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'], ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']]) y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'], ['W', 'W', 'W', 'W', 'W', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'W', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'], ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']]) x.place("d5", 'W') self.assertTrue(np.array_equal(x.data, y.data))
def test_getColumn(self): x = Board() y = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] x.data = np.array([['B'] * 8] * 8) r = np.random.permutation(8) for i in range(8): x.data[r[i], i] = 'W' for i in range(8): z = x.getColumn(y[i]) for j in range(8): if j == r[i]: self.assertEqual(z[j], 'W') else: self.assertEqual(z[j], 'B')
def test_getRow(self): x = Board() y = ['1', '2', '3', '4', '5', '6', '7', '8'] x.data = np.array([['B'] * 8] * 8) r = np.random.permutation(8) for i in range(8): x.data[i, r[i]] = 'W' for i in range(8): z = x.getRow(y[i]) for j in range(8): if j == r[i]: self.assertEqual(z[j], 'W') else: self.assertEqual(z[j], 'B')
def test_isDirectionPlaceable(self): x = Board() x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']]) for (r, c) in itertools.product(list('12345678'), list('abcdefgh')): position = c + r if position in ["a2", "a3", "b4", "c6", "a7"]: self.assertTrue(x.isDirectionPlaceable(position, (0, 1), 'W')) else: self.assertFalse(x.isDirectionPlaceable(position, (0, 1), 'W'))
def test_update(self): x = Board() y = Board() x.update([ "E E E E E E E E", "B E E E E E E E", "E B E E E E E E", "E E B E B E E E", "W B B E W E E E", "E E E B B E E E", "E B E E E W E E", "W E E W E E E E" ]) y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['B', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'E', 'B', 'E', 'E', 'E'], ['W', 'B', 'B', 'E', 'W', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'], ['E', 'B', 'E', 'E', 'E', 'W', 'E', 'E'], ['W', 'E', 'E', 'W', 'E', 'E', 'E', 'E']]) self.assertTrue(np.array_equal(x.data, y.data))
def test_getFlips(self): x = Board() x.data = np.array([['E', 'W', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'W', 'E', 'E', 'E', 'E', 'E'], ['E', 'B', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'E', 'B', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'W', 'E', 'E', 'E', 'E'], ['E', 'B', 'E', 'B', 'W', 'E', 'E', 'E'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'W'], ['E', 'B', 'B', 'B', 'B', 'B', 'B', 'B']]) for (r, c) in itertools.product(list('12345678'), list('abcdefgh')): position = c + r if position == "a1": self.assertEqual(set(x.getFlips(position, 'W')), set([(1, 1), (2, 2)])) elif position == "a2": self.assertEqual(set(x.getFlips(position, 'W')), set([(1, 1), (2, 1), (3, 2)])) elif position == "a3": self.assertEqual(set(x.getFlips(position, 'W')), set([(2, 1), (2, 2)])) elif position == "a4": self.assertEqual(set(x.getFlips(position, 'W')), set([(2, 1)])) elif position == "b4": self.assertEqual(set(x.getFlips(position, 'W')), set([(3, 2), (1, 1), (2, 1)])) elif position == "c5": self.assertEqual(set(x.getFlips(position, 'W')), set([(2, 2), (3, 2)])) elif position == "a6": self.assertEqual(set(x.getFlips(position, 'W')), set([(4, 1), (3, 2)])) elif position == "c6": self.assertEqual(set(x.getFlips(position, 'W')), set([(5, 3)])) elif position == "a7": self.assertEqual( set(x.getFlips(position, 'W')), set([(6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)])) else: self.assertEqual(x.getFlips(position, 'W'), [])
def test_setNextTurn(self): x = Game() y = Board() x.winner = "DRAW" self.assertFalse(x.setNextTurn("d3")) x.winner = None self.assertTrue(x.setNextTurn("d3")) y.data = np.array([['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'E', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'B', 'E', 'E', 'E'], ['E', 'E', 'E', 'B', 'W', 'E', 'E', 'E'], ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E'], ['E', 'E', 'E', 'E', 'E', 'E', 'E', 'E']]) self.assertTrue(np.array_equal(x.board.data, y.data)) self.assertEqual(x.history, ["d3"]) self.assertFalse(x.setNextTurn("e6")) self.assertTrue(x.setNextTurn("NULL")) self.assertEqual(x.getWinner(), "BLACK")