From 2c5c7c33bcb54eff47d7824be2dccd7d706e903f Mon Sep 17 00:00:00 2001 From: Andlek Date: Sat, 24 Jun 2023 19:19:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BB=204=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B0,=20=D0=B8=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BD=D0=B8=D1=85=20=D1=84=D0=B5=D0=B9=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homework/src/main/java/ru/otus/Demo.java | 14 +- .../src/main/java/ru/otus/HomeWork.java | 9 +- .../main/java/ru/otus/game/DiceImplTest.java | 13 ++ .../src/main/java/ru/otus/game/FakeDice.java | 6 + .../java/ru/otus/game/FakeDiceWithError.java | 4 + .../ru/otus/game/FakeGameWinnerPrinter.java | 4 + .../src/main/java/ru/otus/game/GameTest.java | 173 ++++++++++++++++++ .../otus/game/GameWinnerConsolePrinter.java | 2 +- .../java/ru/otus/game/GameWinnerPrinter.java | 6 + 9 files changed, 228 insertions(+), 3 deletions(-) create mode 100644 L18-testingOrigins/homework/src/main/java/ru/otus/game/DiceImplTest.java create mode 100644 L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDice.java create mode 100644 L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDiceWithError.java create mode 100644 L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeGameWinnerPrinter.java create mode 100644 L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/Demo.java b/L18-testingOrigins/homework/src/main/java/ru/otus/Demo.java index 1f6c813..4d06fc7 100644 --- a/L18-testingOrigins/homework/src/main/java/ru/otus/Demo.java +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/Demo.java @@ -2,11 +2,23 @@ import ru.otus.game.*; +import java.util.Collection; + public class Demo { public static void main(String[] args) { Dice dice = new DiceImpl(); - GameWinnerPrinter winnerPrinter = new GameWinnerConsolePrinter(); + GameWinnerPrinter winnerPrinter = new GameWinnerConsolePrinter() { + @Override + public Player getWinner() { + return null; + } + + @Override + public Collection getErrorOutput() { + return null; + } + }; Game game = new Game(dice, winnerPrinter); game.playGame(new Player("Вася"), new Player("Игорь")); } diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/HomeWork.java b/L18-testingOrigins/homework/src/main/java/ru/otus/HomeWork.java index b362bfd..4795de2 100644 --- a/L18-testingOrigins/homework/src/main/java/ru/otus/HomeWork.java +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/HomeWork.java @@ -1,6 +1,9 @@ package ru.otus; +import ru.otus.game.DiceImplTest; +import ru.otus.game.GameTest; + public class HomeWork { /* @@ -14,7 +17,11 @@ public class HomeWork { Информацию о пройденном тесте предлагается выводить в System.out, а об упавшем в System.err */ public static void main(String[] args) { - + new DiceImplTest().testRoll(); + new GameTest().testPlayGame_Player1Wins(); + new GameTest().testPlayGame_Player2Wins(); + new GameTest().testPlayGame_Draw(); + //new GameTest().testPlayGame_DiceRollError(); } } \ No newline at end of file diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/DiceImplTest.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/DiceImplTest.java new file mode 100644 index 0000000..38e6764 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/DiceImplTest.java @@ -0,0 +1,13 @@ +package ru.otus.game; + +public class DiceImplTest { + public void testRoll() { + Dice dice = new DiceImpl(); + int result = dice.roll(); + if (result >= 1 && result <= 6) { + System.out.println("Test passed: Roll result is within the valid range."); + } else { + System.err.println("Test failed: Roll result is outside the valid range."); + } + } +} diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDice.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDice.java new file mode 100644 index 0000000..6883e11 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDice.java @@ -0,0 +1,6 @@ +package ru.otus.game; + +public abstract class FakeDice implements Dice { + public FakeDice(int i, int i1) { + } +} diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDiceWithError.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDiceWithError.java new file mode 100644 index 0000000..8054dd0 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeDiceWithError.java @@ -0,0 +1,4 @@ +package ru.otus.game; + +public abstract class FakeDiceWithError implements Dice { +} diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeGameWinnerPrinter.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeGameWinnerPrinter.java new file mode 100644 index 0000000..a805764 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeGameWinnerPrinter.java @@ -0,0 +1,4 @@ +package ru.otus.game; + +public abstract class FakeGameWinnerPrinter implements GameWinnerPrinter { +} diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java new file mode 100644 index 0000000..a3769c1 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java @@ -0,0 +1,173 @@ +package ru.otus.game; + +import java.util.Collection; + +public class GameTest { + public void testPlayGame_Player1Wins() { + // Создаем фейковые объекты Dice и GameWinnerPrinter + Dice dice = new FakeDice(6, 1) { + @Override + public int roll() { + return 0; + } + }; // player1Result > player2Result + GameWinnerPrinter winnerPrinter = new FakeGameWinnerPrinter() { + @Override + public void printWinner(Player winner) { + + } + + @Override + public Player getWinner() { + return null; + } + + @Override + public Collection getErrorOutput() { + return null; + } + }; + // Создаем экземпляр класса Game + Game game = new Game(dice, winnerPrinter); + + // Создаем двух игроков + Player player1 = new Player("Player 1"); + Player player2 = new Player("Player 2"); + + // Вызываем метод playGame + game.playGame(player1, player2); + + // Проверяем, что победитель - player1 + if (winnerPrinter.getWinner() == player1) { + System.out.println("Test passed: Player 1 wins."); + } else { + System.err.println("Test failed: Player 1 should win."); + } + } + + public void testPlayGame_Player2Wins() { + // Создаем фейковые объекты Dice и GameWinnerPrinter + Dice dice = new FakeDice(2, 4) { + @Override + public int roll() { + return 0; + } + }; // player1Result < player2Result + GameWinnerPrinter winnerPrinter = new FakeGameWinnerPrinter() { + @Override + public void printWinner(Player winner) { + + } + + @Override + public Player getWinner() { + return null; + } + + @Override + public Collection getErrorOutput() { + return null; + } + }; + // Создаем экземпляр класса Game + Game game = new Game(dice, winnerPrinter); + + // Создаем двух игроков + Player player1 = new Player("Player 1"); + Player player2 = new Player("Player 2"); + + // Вызываем метод playGame + game.playGame(player1, player2); + + // Проверяем, что победитель - player2 + if (winnerPrinter.getWinner() == player2) { + System.out.println("Test passed: Player 2 wins."); + } else { + System.err.println("Test failed: Player 2 should win."); + } + } + + public void testPlayGame_Draw() { + // Создаем фейковые объекты Dice и GameWinnerPrinter + Dice dice = new FakeDice(3, 3) { + @Override + public int roll() { + return 0; + } + }; // player1Result = player2Result + GameWinnerPrinter winnerPrinter = new FakeGameWinnerPrinter() { + @Override + public void printWinner(Player winner) { + + } + + @Override + public Player getWinner() { + return null; + } + + @Override + public Collection getErrorOutput() { + return null; + } + }; + // Создаем экземпляр класса Game + Game game = new Game(dice, winnerPrinter); + + // Создаем двух игроков + Player player1 = new Player("Player 1"); + Player player2 = new Player("Player 2"); + + // Вызываем метод playGame + game.playGame(player1, player2); + + // Проверяем, что нет победителя + if (winnerPrinter.getWinner() == null) { + System.out.println("Test passed: Draw, no winner."); + } else { + System.err.println("Test failed: There should be no winner."); + } + } + + public void testPlayGame_DiceRollError() { + // Создаем фейковые объекты Dice и GameWinnerPrinter + Dice dice = new FakeDiceWithError() { + @Override + public int roll() { + return 0; + } + }; + GameWinnerPrinter winnerPrinter = new FakeGameWinnerPrinter() { + @Override + public void printWinner(Player winner) { + + } + + @Override + public Player getWinner() { + return null; + } + + @Override + public Collection getErrorOutput() { + return null; + } + }; + // Создаем экземпляр класса Game + Game game = new Game(dice, winnerPrinter); + + // Создаем двух игроков + Player player1 = new Player("Player 1"); + Player player2 = new Player("Player 2"); + + // Вызываем метод playGame + game.playGame(player1, player2); + + // Проверяем, что нет победителя + if (winnerPrinter.getWinner() == null && winnerPrinter.getErrorOutput().contains("Ошибка при броске кости")) { + System.out.println("Test passed: Error handled correctly."); + } else { + System.err.println("Test failed: Error handling is incorrect."); + } + } +} diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerConsolePrinter.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerConsolePrinter.java index 8f6bb74..2d4a2db 100644 --- a/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerConsolePrinter.java +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerConsolePrinter.java @@ -1,6 +1,6 @@ package ru.otus.game; -public class GameWinnerConsolePrinter implements GameWinnerPrinter { +public abstract class GameWinnerConsolePrinter implements GameWinnerPrinter { @Override public void printWinner(Player winner) { System.out.printf("Победитель: %s%n", winner.getName()); diff --git a/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerPrinter.java b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerPrinter.java index 5ba1fdc..1381426 100644 --- a/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerPrinter.java +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameWinnerPrinter.java @@ -1,5 +1,11 @@ package ru.otus.game; +import java.util.Collection; + public interface GameWinnerPrinter { void printWinner(Player winner); + + Player getWinner(); + + Collection getErrorOutput(); }