diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..87dbc07 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,5 @@ +/TennisGame.class +/TennisGameException.class +/TennisGameTest.class +/TennisGameTest2.class +/AllTests.class diff --git a/bin/TennisGame.class b/bin/TennisGame.class index 2da4e7a..1a97a7c 100644 Binary files a/bin/TennisGame.class and b/bin/TennisGame.class differ diff --git a/bin/TennisGameTest.class b/bin/TennisGameTest.class deleted file mode 100644 index b202db2..0000000 Binary files a/bin/TennisGameTest.class and /dev/null differ diff --git a/src/TennisGame.java b/src/TennisGame.java index 327f284..f20ba7d 100644 --- a/src/TennisGame.java +++ b/src/TennisGame.java @@ -2,56 +2,67 @@ // NOTE THAT it may contain bugs // Write unit tests in TennisGameTest.java and try to find the errors in the code -public class TennisGame { +public class TennisGame +{ private int player1Points; private int player2Points; - private boolean gameEnded; - public TennisGame() { + public TennisGame() + { player1Points = 0; player2Points = 0; gameEnded = false ; } - private void checkGameEnded() { + private void checkGameEnded() + { if (player1Points>=4 && player1Points-player2Points>=2) gameEnded = true; else if (player2Points>=4 && player2Points-player1Points>=2) gameEnded = true; } - - private String getScore(int points) { - switch (points) { - case 0: return "love"; - case 1: return "15" ; - case 2: return "30" ; - case 3: return "40"; - default: return "40" ; + + private String getAScore(int points) + { + switch (points) + { + case 0: return "love"; + case 1: return "15" ; + case 2: return "30" ; + case 3: return "40"; + default: return "40" ; } } - public void player1Scored() throws TennisGameException { - if (gameEnded) { + public void player1Scored() throws TennisGameException + { + if (gameEnded) + { throw new TennisGameException(); } - else { + else + { player1Points++; checkGameEnded(); } } - public void player2Scored() throws TennisGameException { - if (gameEnded) { + public void player2Scored() throws TennisGameException + { + if (gameEnded) + { throw new TennisGameException(); } - else { + else + { player2Points++; checkGameEnded(); } } - public String getScore() { + public String getScore() + { // Here is the format of the scores: // "love - love" // "15 - 15" @@ -66,26 +77,22 @@ public String getScore() { // "player2 has advantage" // "player1 wins" // "player2 wins" - - String player1Score = getScore(player1Points); - String player2Score = getScore(player2Points); - - if (gameEnded) { - if (player1Points > player2Points) - return "player1 wins"; - else - return "player2 wins"; - } - - if (player1Points >= 4 && player1Points == player2Points) - return "deuce"; - - if (player1Points >= 4 && player1Points - player2Points == 1) - return "player1 has advantage"; - - if (player2Points > 4 && player2Points - player1Points == 1) - return "player2 has advantage"; - - return player2Score + " - " + player1Score ; + String player1Score = getAScore(player1Points); + String player2Score = getAScore(player2Points); + if (gameEnded) + { + if (player1Points > player2Points) + return "player1 wins"; + else + return "player2 wins"; + } + if (player1Points >= 3 && player1Points == player2Points) + return "deuce"; + else if (player1Points >= 4 && player1Points - player2Points == 1) + return "player1 has advantage"; + else if (player2Points >= 4 && player2Points - player1Points == 1) + return "player2 has advantage"; + return player1Score + " - " + player2Score ; + //return player2Score + " - " + player1Score ; } } \ No newline at end of file diff --git a/src/TennisGameException.java b/src/TennisGameException.java index 23fa24f..ac586b7 100644 --- a/src/TennisGameException.java +++ b/src/TennisGameException.java @@ -1,4 +1,5 @@ -public class TennisGameException extends Exception { +public class TennisGameException extends Exception +{ } diff --git a/tests/TennisGameTest.java b/tests/TennisGameTest.java deleted file mode 100644 index 8674eba..0000000 --- a/tests/TennisGameTest.java +++ /dev/null @@ -1,67 +0,0 @@ -import static org.junit.Assert.*; - -import org.junit.Test; - -import jdk.nashorn.internal.ir.annotations.Ignore; - -public class TennisGameTest { - -// Here is the format of the scores: "player1Score - player2Score" -// "love - love" -// "15 - 15" -// "30 - 30" -// "deuce" -// "15 - love", "love - 15" -// "30 - love", "love - 30" -// "40 - love", "love - 40" -// "30 - 15", "15 - 30" -// "40 - 15", "15 - 40" -// "player1 has advantage" -// "player2 has advantage" -// "player1 wins" -// "player2 wins" - @Ignore - public void testTennisGame_Start() { - //Arrange - TennisGame game = new TennisGame(); - //Act - String score = game.getScore() ; - // Assert - assertEquals("Initial score incorrect", "love - love", score); - } - - @Test - public void testTennisGame_EahcPlayerWin4Points_Score_Deuce() throws TennisGameException { - //Arrange - TennisGame game = new TennisGame(); - - game.player1Scored(); - game.player1Scored(); - game.player1Scored(); - - game.player2Scored(); - game.player2Scored(); - game.player2Scored(); - - game.player1Scored(); - game.player2Scored(); - //Act - String score = game.getScore() ; - // Assert - assertEquals("Tie score incorrect", "deuce", score); - } - - @Test (expected = TennisGameException.class) - public void testTennisGame_Player1WinsPointAfterGameEnded_ResultsException() throws TennisGameException { - //Arrange - TennisGame game = new TennisGame(); - //Act - game.player1Scored(); - game.player1Scored(); - game.player1Scored(); - game.player1Scored(); - //Act - // This statement should cause an exception - game.player1Scored(); - } -} diff --git a/tests/TennisGameTest2.java b/tests/TennisGameTest2.java new file mode 100644 index 0000000..ab2f745 --- /dev/null +++ b/tests/TennisGameTest2.java @@ -0,0 +1,303 @@ +import static org.junit.Assert.*; +import org.junit.Test; +public class TennisGameTest2 +{ + @Test + public void before_game_start_score_is_love_love() + { + TennisGame aGame = new TennisGame(); + String test = aGame.getScore(); + assertEquals("love - love",test); + } + + @Test + public void test_player1_scores_score_15_0() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("15 - love",test); + } + + @Test + public void test_player1_scores_score_30_0() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("30 - love",test); + } + + @Test + public void test_player1_scores_score_40_0() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("40 - love",test); + } + + @Test + public void test_player1_wins() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); + //System.out.println(test); + assertEquals("player1 wins",test); + } + + //Player1 won, but someone is still trying to score + @Test (expected = TennisGameException.class ) + public void test_player1_won_already_throw_exception() throws TennisGameException + { + TennisGame aGame = new TennisGame(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + } + + @Test + public void test_player2_scores_score_0_15() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("love - 15",test); + } + @Test + public void test_player2_scores_score_0_30() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player2Scored(); + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("love - 30",test); + } + @Test + public void test_player2_scores_score_0_40() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("love - 40",test); + } + + @Test + public void test_player2_wins() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("player2 wins",test); + } + + //Player2 won, but someone is still trying to score + @Test (expected = TennisGameException.class ) + public void test_player2_won_already_throw_exception() throws TennisGameException + { + TennisGame aGame = new TennisGame(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + } + + @Test + public void player1_advantage() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("player1 has advantage",test); + } + + @Test + public void player2_advantage() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("player2 has advantage",test); + } + + @Test + public void player2_wins_after_advantage() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("player2 wins",test); + } + + @Test + public void player1_wins_after_advantage() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("player1 wins",test); + } + + + @Test + public void deuce() + { + TennisGame aGame = new TennisGame(); + try + { + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player1Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + aGame.player2Scored(); + + } + catch(TennisGameException e) + { + + } + String test = aGame.getScore(); +// System.out.println(test); + assertEquals("deuce",test); + } +}