From 406fac268103f4a5905c6813f4855bf0882359f9 Mon Sep 17 00:00:00 2001 From: emilybache Date: Tue, 9 Oct 2012 15:51:08 +0200 Subject: [PATCH] Added test case for unittest which is in the standard library, and therefore more people have it. It's a less good test though, because it is not properly parameterized. --- Tennis/python/tennis_test.py | 49 ++---------------------- Tennis/python/tennis_unittest.py | 66 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 46 deletions(-) create mode 100644 Tennis/python/tennis_unittest.py diff --git a/Tennis/python/tennis_test.py b/Tennis/python/tennis_test.py index 57bd0d70..450b14b0 100644 --- a/Tennis/python/tennis_test.py +++ b/Tennis/python/tennis_test.py @@ -1,54 +1,11 @@ import pytest from tennis import TennisGame -# actual test code +from tennis_unittest import test_cases + class TestTennis: - @pytest.mark.parametrize('p1Points p2Points score p1Name p2Name'.split(),[ - (0, 0, "Love-All", 'player1', 'player2'), - (1, 1, "Fifteen-All", 'player1', 'player2'), - (2, 2, "Thirty-All", 'player1', 'player2'), - (3, 3, "Forty-All", 'player1', 'player2'), - (4, 4, "Deuce", 'player1', 'player2'), - - (1, 0, "Fifteen-Love", 'player1', 'player2'), - (0, 1, "Love-Fifteen", 'player1', 'player2'), - (2, 0, "Thirty-Love", 'player1', 'player2'), - (0, 2, "Love-Thirty", 'player1', 'player2'), - (3, 0, "Forty-Love", 'player1', 'player2'), - (0, 3, "Love-Forty", 'player1', 'player2'), - (4, 0, "Win for player1", 'player1', 'player2'), - (0, 4, "Win for player2", 'player1', 'player2'), - - (2, 1, "Thirty-Fifteen", 'player1', 'player2'), - (1, 2, "Fifteen-Thirty", 'player1', 'player2'), - (3, 1, "Forty-Fifteen", 'player1', 'player2'), - (1, 3, "Fifteen-Forty", 'player1', 'player2'), - (4, 1, "Win for player1", 'player1', 'player2'), - (1, 4, "Win for player2", 'player1', 'player2'), - - (3, 2, "Forty-Thirty", 'player1', 'player2'), - (2, 3, "Thirty-Forty", 'player1', 'player2'), - (4, 2, "Win for player1", 'player1', 'player2'), - (2, 4, "Win for player2", 'player1', 'player2'), - - (4, 3, "Advantage player1", 'player1', 'player2'), - (3, 4, "Advantage player2", 'player1', 'player2'), - (5, 4, "Advantage player1", 'player1', 'player2'), - (4, 5, "Advantage player2", 'player1', 'player2'), - (15, 14, "Advantage player1", 'player1', 'player2'), - (14, 15, "Advantage player2", 'player1', 'player2'), - - (6, 4, 'Win for player1', 'player1', 'player2'), - (4, 6, 'Win for player2', 'player1', 'player2'), - (16, 14, 'Win for player1', 'player1', 'player2'), - (14, 16, 'Win for player2', 'player1', 'player2'), - - (6, 4, 'Win for One', 'One', 'player2'), - (4, 6, 'Win for Two', 'player1', 'Two'), - (6, 5, 'Advantage One', 'One', 'player2'), - (5, 6, 'Advantage Two', 'player1', 'Two') - ]) + @pytest.mark.parametrize('p1Points p2Points score p1Name p2Name'.split(), test_cases) def test_get_score(self, p1Points, p2Points, score, p1Name, p2Name): game = TennisGame(p1Name, p2Name) for i in range(p1Points): diff --git a/Tennis/python/tennis_unittest.py b/Tennis/python/tennis_unittest.py new file mode 100644 index 00000000..f2eca430 --- /dev/null +++ b/Tennis/python/tennis_unittest.py @@ -0,0 +1,66 @@ +import unittest + +from tennis import TennisGame + +test_cases = [ + (0, 0, "Love-All", 'player1', 'player2'), + (1, 1, "Fifteen-All", 'player1', 'player2'), + (2, 2, "Thirty-All", 'player1', 'player2'), + (3, 3, "Forty-All", 'player1', 'player2'), + (4, 4, "Deuce", 'player1', 'player2'), + + (1, 0, "Fifteen-Love", 'player1', 'player2'), + (0, 1, "Love-Fifteen", 'player1', 'player2'), + (2, 0, "Thirty-Love", 'player1', 'player2'), + (0, 2, "Love-Thirty", 'player1', 'player2'), + (3, 0, "Forty-Love", 'player1', 'player2'), + (0, 3, "Love-Forty", 'player1', 'player2'), + (4, 0, "Win for player1", 'player1', 'player2'), + (0, 4, "Win for player2", 'player1', 'player2'), + + (2, 1, "Thirty-Fifteen", 'player1', 'player2'), + (1, 2, "Fifteen-Thirty", 'player1', 'player2'), + (3, 1, "Forty-Fifteen", 'player1', 'player2'), + (1, 3, "Fifteen-Forty", 'player1', 'player2'), + (4, 1, "Win for player1", 'player1', 'player2'), + (1, 4, "Win for player2", 'player1', 'player2'), + + (3, 2, "Forty-Thirty", 'player1', 'player2'), + (2, 3, "Thirty-Forty", 'player1', 'player2'), + (4, 2, "Win for player1", 'player1', 'player2'), + (2, 4, "Win for player2", 'player1', 'player2'), + + (4, 3, "Advantage player1", 'player1', 'player2'), + (3, 4, "Advantage player2", 'player1', 'player2'), + (5, 4, "Advantage player1", 'player1', 'player2'), + (4, 5, "Advantage player2", 'player1', 'player2'), + (15, 14, "Advantage player1", 'player1', 'player2'), + (14, 15, "Advantage player2", 'player1', 'player2'), + + (6, 4, 'Win for player1', 'player1', 'player2'), + (4, 6, 'Win for player2', 'player1', 'player2'), + (16, 14, 'Win for player1', 'player1', 'player2'), + (14, 16, 'Win for player2', 'player1', 'player2'), + + (6, 4, 'Win for One', 'One', 'player2'), + (4, 6, 'Win for Two', 'player1', 'Two'), + (6, 5, 'Advantage One', 'One', 'player2'), + (5, 6, 'Advantage Two', 'player1', 'Two'), + + ] + +class TestTennis(unittest.TestCase): + + def test_Score(self): + for testcase in test_cases: + (p1Points, p2Points, score, p1Name, p2Name) = testcase + game = TennisGame(p1Name, p2Name) + for i in range(p1Points): + game.won_point(p1Name) + for i in range(p2Points): + game.won_point(p2Name) + self.assertEquals(score, game.score()) + +if __name__ == "__main__": + unittest.main() + \ No newline at end of file