diff --git a/Tennis/python/tennis.py b/Tennis/python/tennis.py index e7e33791..83a14c6d 100644 --- a/Tennis/python/tennis.py +++ b/Tennis/python/tennis.py @@ -173,4 +173,4 @@ class TennisGameDefactored3: return "Deuce" s = self.p1N if self.p1 > self.p2 else self.p2N return "Advantage " + s if ((self.p1-self.p2)*(self.p1-self.p2) == 1) else "Win for " + s - +TennisGame = TennisGameDefactored3 diff --git a/Tennis/python/tennis_test.py b/Tennis/python/tennis_test.py index 2c5afe81..57bd0d70 100644 --- a/Tennis/python/tennis_test.py +++ b/Tennis/python/tennis_test.py @@ -1,68 +1,54 @@ - +import pytest from tennis import TennisGame -# test support code -def params(funcarglist): - def wrapper(function): - function.funcarglist = funcarglist - return function - return wrapper - -def pytest_generate_tests(metafunc): - for funcargs in getattr(metafunc.function, 'funcarglist', ()): - if "p1Name" not in funcargs: - funcargs["p1Name"] = "player1" - if "p2Name" not in funcargs: - funcargs["p2Name"] = "player2" - metafunc.addcall(funcargs=funcargs) - # actual test code class TestTennis: - @params([dict(p1Points=0, p2Points=0, score="Love-All"), - dict(p1Points=1, p2Points=1, score="Fifteen-All"), - dict(p1Points=2, p2Points=2, score="Thirty-All"), - dict(p1Points=3, p2Points=3, score="Forty-All"), - dict(p1Points=4, p2Points=4, score="Deuce"), + @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'), - dict(p1Points=1, p2Points=0, score="Fifteen-Love"), - dict(p1Points=0, p2Points=1, score="Love-Fifteen"), - dict(p1Points=2, p2Points=0, score="Thirty-Love"), - dict(p1Points=0, p2Points=2, score="Love-Thirty"), - dict(p1Points=3, p2Points=0, score="Forty-Love"), - dict(p1Points=0, p2Points=3, score="Love-Forty"), - dict(p1Points=4, p2Points=0, score="Win for player1"), - dict(p1Points=0, p2Points=4, score="Win for 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'), - dict(p1Points=2, p2Points=1, score="Thirty-Fifteen"), - dict(p1Points=1, p2Points=2, score="Fifteen-Thirty"), - dict(p1Points=3, p2Points=1, score="Forty-Fifteen"), - dict(p1Points=1, p2Points=3, score="Fifteen-Forty"), - dict(p1Points=4, p2Points=1, score="Win for player1"), - dict(p1Points=1, p2Points=4, score="Win for 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'), - dict(p1Points=3, p2Points=2, score="Forty-Thirty"), - dict(p1Points=2, p2Points=3, score="Thirty-Forty"), - dict(p1Points=4, p2Points=2, score="Win for player1"), - dict(p1Points=2, p2Points=4, score="Win for 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'), - dict(p1Points=4, p2Points=3, score="Advantage player1"), - dict(p1Points=3, p2Points=4, score="Advantage player2"), - dict(p1Points=5, p2Points=4, score="Advantage player1"), - dict(p1Points=4, p2Points=5, score="Advantage player2"), - dict(p1Points=15, p2Points=14, score="Advantage player1"), - dict(p1Points=14, p2Points=15, score="Advantage 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'), - dict(p1Points=6, p2Points=4, score="Win for player1"), - dict(p1Points=4, p2Points=6, score="Win for player2"), - dict(p1Points=16, p2Points=14, score="Win for player1"), - dict(p1Points=14, p2Points=16, score="Win for 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'), - dict(p1Points=6, p2Points=4, score="Win for One", p1Name='One'), - dict(p1Points=4, p2Points=6, score="Win for Two", p2Name="Two"), - dict(p1Points=6, p2Points=5, score="Advantage One", p1Name='One'), - dict(p1Points=5, p2Points=6, score="Advantage Two", p2Name="Two"), - ]) + (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') + ]) def test_get_score(self, p1Points, p2Points, score, p1Name, p2Name): game = TennisGame(p1Name, p2Name) for i in range(p1Points):