Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion L18-testingOrigins/homework/src/main/java/ru/otus/Demo.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Object> getErrorOutput() {
return null;
}
};
Game game = new Game(dice, winnerPrinter);
game.playGame(new Player("Вася"), new Player("Игорь"));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package ru.otus;


import ru.otus.game.DiceImplTest;
import ru.otus.game.GameTest;

public class HomeWork {

/*
Expand All @@ -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();
}

}
Original file line number Diff line number Diff line change
@@ -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.");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ru.otus.game;

public abstract class FakeDice implements Dice {
public FakeDice(int i, int i1) {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package ru.otus.game;

public abstract class FakeDiceWithError implements Dice {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package ru.otus.game;

public abstract class FakeGameWinnerPrinter implements GameWinnerPrinter {
}
173 changes: 173 additions & 0 deletions L18-testingOrigins/homework/src/main/java/ru/otus/game/GameTest.java
Original file line number Diff line number Diff line change
@@ -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<Object> 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<Object> 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<Object> 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<Object> 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.");
}
}
}
Original file line number Diff line number Diff line change
@@ -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());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package ru.otus.game;

import java.util.Collection;

public interface GameWinnerPrinter {
void printWinner(Player winner);

Player getWinner();

Collection<Object> getErrorOutput();
}