def test_hash(self):
     game1 = Connect4().make_moves(['a', 'f'])
     table = {game1: 'game1'}
     self.assertEqual(len(table), 1)
     self.assertEqual(table[game1], 'game1')
     game2 = Connect4().make_moves(['a', 'f'])
     table[game2] = 'game2'
     self.assertEqual(table[game1], 'game2')
     self.assertEqual(table[game2], 'game2')
     game3 = Connect4().make_moves(['a', 'f', 'a'])
     table[game3] = 'game3'
     self.assertEqual(len(table), 2)
     self.assertEqual(table[game3], 'game3')
 def test_init_with_board_that_is_not_over_2(self):
     game = Connect4(
         [['O', ' ', ' ', 'X', ' ', ' ', ' '],
          ['X', ' ', ' ', 'O', ' ', ' ', ' '],
          ['O', ' ', ' ', 'X', ' ', ' ', ' '],
          ['X', ' ', ' ', 'O', ' ', ' ', ' '],
          ['O', ' ', ' ', 'X', ' ', ' ', ' '],
          ['X', 'X', ' ', 'O', ' ', ' ', ' ']]
     )
     self.assertFalse(game.is_over())
     self.assertFalse(game._is_win(game._boards[0]))
     self.assertFalse(game._is_win(game._boards[1]))
     self.assertEqual(game.cur_player(), 1)
     self.assertEqual(game.legal_moves(), ['b', 'c', 'e', 'f', 'g'])
 def test_init_with_board_that_is_over(self):
     game = Connect4(
         [[' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', 'O', ' ', ' ', ' '],
          ['X', 'O', 'X', 'O', 'O', ' ', ' ']]
     )
     self.assertTrue(game.is_over())
     self.assertTrue(game._is_win(game._boards[0]))
     self.assertFalse(game._is_win(game._boards[1]))
     self.assertEqual(game._height, [1, 8, 18, 23, 29, 35, 42])
     self.assertEqual(game.legal_moves(), [])
 def test_init_with_board_that_is_not_over_1(self):
     game = Connect4(
         [['O', ' ', ' ', ' ', ' ', ' ', ' '],
          ['X', ' ', ' ', ' ', ' ', ' ', ' '],
          ['O', ' ', ' ', ' ', ' ', ' ', ' '],
          ['X', ' ', ' ', ' ', ' ', ' ', ' '],
          ['O', ' ', ' ', ' ', ' ', ' ', ' '],
          ['X', ' ', ' ', ' ', ' ', ' ', ' ']]
     )
     self.assertFalse(game.is_over())
     self.assertFalse(game._is_win(game._boards[0]))
     self.assertFalse(game._is_win(game._boards[1]))
     self.assertEqual(game.cur_player(), 0)
     self.assertEqual(game._height, [6, 7, 14, 21, 28, 35, 42])
     self.assertEqual(game.legal_moves(), ['b', 'c', 'd', 'e', 'f', 'g'])
 def test_init_with_board(self):
     game = Connect4(
         [[' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', 'O', ' ', ' ', ' '],
          ['X', 'O', 'X', 'O', 'O', ' ', ' ']]
     )
     b = [[' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', ' ', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', ' ', ' ', ' ', ' '],
          [' ', ' ', 'X', 'O', ' ', ' ', ' '],
          ['X', 'O', 'X', 'O', 'O', ' ', ' ']]
     self.assertEqual(game.board, b)
 def setUp(self):
     self.game = Connect4()
 def test_equal(self):
     moves = ['a', 'b']
     self.game.make_moves(moves)
     other = Connect4().make_moves(moves)
     self.assertEqual(self.game, other)
 def test_not_equal(self):
     other = Connect4().make_moves(['a'])
     self.assertNotEqual(self.game, other)