def test4():
    game = Game(5, 5, 2, 4)
    checker = 1
    if game.getBoard().getWidth() != 5 or game.getBoard().getHeight() != 5:
        print "getBoard() not OK. Please check"
        checker = 0
    if not game.isActive():
        print "isActive() not OK."
        print "Expected: True"
        print "Received: ", game.isActive()
        checker = 0
    if game.getTurn() != 2:
        print "getTurn() not OK."
        print "Expected: 2"
        print "Received: ", game.getTurn()
        checker = 0
    if game.getWinner() != 0:
        print "getWinner() not OK."
        print "Expected: 0"
        print "Received: ", game.getWinner()
        checker = 0
    game.deactivate()
    if game.isActive():
        print "isActive() or deactivate() not OK."
        print "Expected: False"
        print "Received: ", game.isActive()
        checker = 0
    game.activate()
    if not game.isActive():
        print "isActive() or activate() not OK."
        print "Expected: True"
        print "Received: ", game.isActive()
        checker = 0
    game.switchTurn()
    if game.getTurn() != 1:
        print "switchTurn() not OK."
        print "Expected: 1"
        print "Received: ", game.getTurn()
        checker = 0
    game.declareWinner(2)
    if game.getWinner() != 2:
        print "declareWinner() not OK."
        print "Expected: 2"
        print "Received: ", game.getWinner()
        checker = 0        
    
    game.draw()
    if checker == 1:
        print "Test 4 OK"
    else:
        print "Test 4 not OK"
def test10():
    X, O = 1, 2
    game = Game(5, 5, O, 4)
    checker = 1
    game.mark(O, (2, 1))
    game.mark(X, (2, 2))
    game.mark(O, (1, 2))
    game.mark(X, (0, 3))
    game.mark(O, (1, 1))
    
    copy_game = game.generateGameCopy()
    if game == copy_game:
        print "generateGameCopy() not OK. Expected: a copy, received: the instance itself."
        checker = 0
    if game.getBoard() == copy_game.getBoard():
        print "generateGameCopy() not OK. The copy and the main game are sharing the same board. Please use another board for the copy."
        checker = 0
    if not copy_game.isActive():
        print "generateGameCopy() not OK. It is not active while the main game is."
        checker = 0
    if copy_game.getTurn() != game.getTurn():
        print "generateGameCopy() not OK. Please review __turn."
        checker = 0
    if copy_game.getWinner() != game.getWinner():
        print "generateGameCopy() not OK. Please review __winner."
        checker = 0
    if copy_game.getBoard().getBoardStatus() != game.getBoard().getBoardStatus():
        print "generateGameCopy() not OK. The board status are not the same."
        print "Expected: ", game.getBoard().getBoardStatus()
        print "Received: ", copy_game.getBoard().getBoardStatus()
        checker = 0
    
    game.draw()
    if checker == 1:
        print "Test 10 OK"
    else:
        print "Test 10 not OK"
def test8():
    game = Game(5, 5, 2, 4)
    checker = 1
    game.getBoard().setBoardStatus([[0, 0, 0, 0, 0], [0, 0, 1, 1, 2], [0, 0, 0, 2, 0], [0, 0, 0, 1, 0], [0, 2, 1, 0, 0]])

    if game.getTurn() != 2:
        game.switchTurn()
        
    game.mark(2, (3, 2)) 
    game.draw()
    if game.isActive():
        print "mark() not OK. You may have forgotten to deactivate the game."
        print "Expected: Status active = True"
        print "Received: Status active = ", game.isActive()
        checker = 0
    if game.getWinner() != 2:
        print "mark() not OK. You may have forgotten to declare the winner."
        print "Expected: Winner 2"
        print "Received: Winner ", game.getWinner()
        
    game = Game(5, 5, 2, 4)
    checker = 1
    game.getBoard().setBoardStatus([[0, 2, 1, 2, 2], [2, 1, 1, 1, 2], [1, 1, 2, 2, 1], [2, 2, 1, 1, 1], [1, 2, 1, 1, 2]])

    if game.getTurn() != 1:
        game.switchTurn()
    game.mark(1, (0, 0))

    game.draw()
    if game.isActive():
        print "mark() not OK. You may have forgotten to deactivate the game."
        print "Expected: Status active = True"
        print "Received: Status active = ", game.isActive()
        checker = 0
    if game.getWinner() != 0:
        print "mark() not OK. The game should have no winner."
        print "Expected: Winner 0"
        print "Received: Winner ", game.getWinner()
        
    game = Game(5, 5, 2, 4)
    checker = 1
    game.getBoard().setBoardStatus([[0, 0, 0, 0, 0], [0, 0, 1, 1, 2], [0, 0, 0, 2, 0], [0, 0, 0, 1, 0], [0, 2, 1, 0, 0]])
    
    if game.getTurn() != 2:
        game.switchTurn()
    game.mark(2, (3, 4))
    
    game.draw()
    if not game.isActive():
        print "mark() not OK. "
        print "Expected: Status active = True"
        print "Received: Status active = ", game.isActive()
        checker = 0
    if game.getWinner() != 0:
        print "mark() not OK. The game should have no winner."
        print "Expected: Winner 0"
        print "Received: Winner ", game.getWinner()
    if game.getTurn() != 1:
        print "mark() not OK. You may have forgotten to switch the turn."
        print "Expected: Turn of 1"
        print "Received: Turn of ", game.getTurn()
        
    if checker == 1:
        print "Test 8 OK"
    else:
        print "Test 8 not OK"
def test5():
    print "Creating a game 5x5. Player O go first."
    game = Game(5, 5, 2, 4)
    checker = 1
    
    try:
        print "Player X wants to mark at (0, 0)"
        game.mark(1, (0, 0))
    except:
        pass
    
    if game.getBoard().getCellStatus((0, 0)) == 1:
        print "mark() not OK."
        print "Player X should not have right to mark, as it's not his turn."
        checker = 0
    
    try:
        print "Player O marks at (1, 1)"
        game.mark(2, (1, 1))
        game.draw()
    except:
        print "mark() not OK. Please check your code."
        return
    
    if game.getBoard().getCellStatus((1, 1)) != 2:
        print "mark() not OK. Please check your code."
        checker = 0
    
    try:
        print "Player X wants to mark at (1, 1)"
        game.mark(1, (1, 1))
    except:
        pass

    if game.getBoard().getCellStatus((1, 1)) == 1:
        print "mark() not OK."
        print "Player X should not have right to mark, as the cell is already occupied."
        checker = 0
    
    print "Try deactivating the game"
    game.deactivate()
    
    try:
        print "Player X wants to mark at (1, 2)"
        game.mark(1, (1, 2))
    except:
        pass
    
    if game.getBoard().getCellStatus((1, 2)) == 1:
        print "mark() not OK."
        print "Player X should not have right to mark, as the game has finished."
        checker = 0
        
    print "Reactivating the game"
    game.activate()
    if game.getTurn() == 2:
        game.switchTurn()
    
    try:
        print "Player X wants to mark at (1, 2)"
        game.mark(1, (1, 2))
        game.draw()
    except:
        pass

    if game.getBoard().getCellStatus((1, 2)) != 1:
        print "mark() not OK. Please check your code."
        checker = 0    
    
    if checker == 1:
        print "Test 5 OK"
    else:
        print "Test 5 not OK"