def test_move_into_unclaimed():
    engine = TicTacToe()
    engine.move(PLAYER_X, 0)

    assert_equal(engine.winner, None)
    assert_equal(engine.squares, [PLAYER_X, None, None, None, None, None, None, None, None])
    assert_equal(engine.moves, [(PLAYER_X, 0)])
def test_move_wins():
    engine = TicTacToe()

    engine.move(PLAYER_X, 0)
    engine.move(PLAYER_O, 3)
    assert_equal(engine.winner, None)

    engine.move(PLAYER_X, 1)
    engine.move(PLAYER_O, 4)
    assert_equal(engine.winner, None)

    engine.move(PLAYER_X, 2)
    engine.move(PLAYER_O, 5)
    assert_equal(engine.winner, PLAYER_X)
def test_move_cats():
    engine = TicTacToe()
    [engine.move(p, sq) for p, sq in build_move_list([0, 4, 8, 7, 1, 2, 6, 3, 5])]

    assert_equal(engine.winner, "cats")
def test_not_winner():
    engine = TicTacToe()
    [engine.move(p, sq) for p, sq in build_move_list([0, 4, 8, 6, 2])]

    assert_equal(engine.is_winner(PLAYER_X, 7), False)
def test_move_out_of_bounds():
    engine = TicTacToe()
    engine.move(PLAYER_X, 9)
def test_move_into_claimed():
    engine = TicTacToe()
    engine.move(PLAYER_X, 0)
    engine.move(PLAYER_O, 0)