Merge branch 'master' of github.com:emilybache/Refactoring-Katas

This commit is contained in:
Emily Bache 2012-08-08 14:40:14 +02:00
commit 55a9d1b1bf
2 changed files with 41 additions and 55 deletions

View File

@ -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

View File

@ -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):