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..0c617fe 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,10 @@ 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(); } - + } \ 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..ef47f8a --- /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("Тест успешно пройден: результат броска кости корректен."); + } else { + System.err.println("Ошибка в тесте: результат броска кости должен быть от 1 до 6."); + } + } +} \ No newline at end of file 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..d1d34da --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/FakeGameWinnerPrinter.java @@ -0,0 +1,14 @@ +package ru.otus.game; + +public class FakeGameWinnerPrinter implements GameWinnerPrinter { + private boolean printWinnerCalled = false; + + @Override + public void printWinner(Player winner) { + printWinnerCalled = true; + } + + public boolean isPrintWinnerCalled() { + return printWinnerCalled; + } +} \ No newline at end of file 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..a5b67e1 --- /dev/null +++ b/L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java @@ -0,0 +1,73 @@ +package ru.otus.game; + +public class GameTest { + public void testPlayGame_Player1Wins() { + // Создаем объекты и данные для теста + Dice dice = new DiceImpl(); + GameWinnerPrinter winnerPrinter = new GameWinnerConsolePrinter(); + Player player1 = new Player("Вася"); + Player player2 = new Player("Игорь"); + + // Присваиваем значения + int player1Result = 5; // Результат броска кости для player1 + int player2Result = 3; // Результат броска кости для player2 + + // Создаем объект Game и вызываем метод playGame + Game game = new Game(dice, winnerPrinter); + game.playGame(player1, player2); + + // Проверяем, что правильный игрок 1 объявлен победителем + if (player1Result > player2Result) { + System.out.println("Тест успешно пройден: игрок Вася объявлен победителем, так как у него результат больше."); + } else { + System.err.println("Ошибка в тесте: игрок Вася должен быть объявлен победителем, так как у него результат больше."); + } + } + + public void testPlayGame_Player2Wins() { + // Создаем объекты и данные для теста + Dice dice = new DiceImpl(); + GameWinnerPrinter winnerPrinter = new GameWinnerConsolePrinter(); + Player player1 = new Player("Вася"); + Player player2 = new Player("Игорь"); + + // Устанавливаем ожидаемые значения + int player1Result = 1; // Результат броска кости для player1 + int player2Result = 4; // Результат броска кости для player2 + + // Создаем объект Game и вызываем метод playGame + Game game = new Game(dice, winnerPrinter); + game.playGame(player1, player2); + + // Проверяем, что правильный игрок объявлен победителем + if (player1Result < player2Result) { + System.out.println("Тест успешно пройден: игрок Игорь объявлен победителем, так как у него результат больше."); + } else { + System.err.println("Ошибка в тесте: игрок Игорь должен быть объявлен победителем, так как у него результат больше."); + } + } + + public void testPlayGame_Draw() { + // Создаем объекты и данные для теста + Dice dice = new DiceImpl(); + FakeGameWinnerPrinter winnerPrinterStub = new FakeGameWinnerPrinter(); + Player player1 = new Player("Вася"); + Player player2 = new Player("Игорь"); + + // Устанавливаем ожидаемые значения + int player1Result = 4; // Результат броска кости для player1 + int player2Result = 4; // Результат броска кости для player2 + + // Создаем объект Game и вызываем метод playGame + Game game = new Game(dice, winnerPrinterStub); + game.playGame(player1, player2); + + // Проверяем, что метод printWinner() не вызывается + if (winnerPrinterStub.isPrintWinnerCalled() == false) { + System.out.println("Тест успешно пройден: метод printWinner() не был вызван при ничьей."); + } else { + System.err.println("Ошибка в тесте при ничьей: метод printWinner() вызывается, хотя не должен этого делать."); + } + } + +}