Browse Source

Merge branch 'main' into 'implementFaceDown'

# Conflicts:
#   src/test/java/de/hsfulda/onses/GameServiceTest.java
main
fdai7793 11 months ago
parent
commit
bffb265097
  1. 35
      .gitlab-ci.yml
  2. 4
      build-project.sh
  3. 8
      pom.xml
  4. 6
      src/main/java/de/hsfulda/onses/App.java
  5. 21
      src/main/java/de/hsfulda/onses/controllers/AppController.java
  6. 57
      src/main/java/de/hsfulda/onses/controllers/CardController.java
  7. 54
      src/main/java/de/hsfulda/onses/controllers/GameController.java
  8. 47
      src/main/java/de/hsfulda/onses/controllers/PlayerController.java
  9. 36
      src/main/java/de/hsfulda/onses/models/Player.java
  10. 17
      src/main/java/de/hsfulda/onses/services/GameService.java
  11. 7
      src/main/resources/de/hsfulda/onses/views/app.fxml
  12. 19
      src/main/resources/de/hsfulda/onses/views/card.fxml
  13. 45
      src/main/resources/de/hsfulda/onses/views/game.fxml
  14. 17
      src/main/resources/de/hsfulda/onses/views/player.fxml
  15. 14
      src/test/java/de/hsfulda/onses/ExampleTest.java
  16. 31
      src/test/java/de/hsfulda/onses/GameServiceTest.java
  17. 32
      src/test/java/de/hsfulda/onses/GuiTest.java
  18. 56
      src/test/java/de/hsfulda/onses/PlayerTest.java

35
.gitlab-ci.yml

@ -1,35 +0,0 @@
include:
- template: SAST.gitlab-ci.yml
default:
tags: ['docker-exec']
image: maven:3.9.6-eclipse-temurin-21-jammy
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dmaven.artifact.threads=50"
cache:
paths:
- .m2/repository/
junit tests:
stage: test
script:
- mvn test
allow_failure: false
artifacts:
expire_in: 1 week
reports:
junit:
- target/surefire-reports/TEST-*.xml
script tests:
stage: test
script:
- ./build-project.sh
allow_failure: false
artifacts:
expire_in: 1 week
reports:
junit:
- target/surefire-reports/TEST-*.xml

4
build-project.sh

@ -1,3 +1,7 @@
#!/bin/bash #!/bin/bash
echo "Init"
mvn dependency:resolve
echo "Build"
mvn clean compile
echo "RUN JUnit Tests" echo "RUN JUnit Tests"
mvn clean test mvn clean test

8
pom.xml

@ -43,6 +43,14 @@
<version>${junit.version}</version> <version>${junit.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.testfx</groupId>
<artifactId>testfx-junit5</artifactId>
<version>4.0.17</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

6
src/main/java/de/hsfulda/onses/App.java

@ -1,7 +1,7 @@
package de.hsfulda.onses; package de.hsfulda.onses;
import de.hsfulda.onses.controllers.AppController; import de.hsfulda.onses.controllers.AppController;
import de.hsfulda.onses.models.Game;
import de.hsfulda.onses.services.GameService;
import javafx.application.Application; import javafx.application.Application;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
@ -9,9 +9,9 @@ import javafx.stage.Stage;
public class App extends Application { public class App extends Application {
@Override @Override
public void start(Stage stage) throws Exception { public void start(Stage stage) throws Exception {
final AppController appController = new AppController(new Game());
final AppController appController = new AppController(new GameService(), stage);
stage.setTitle("Onses - Uno Game");
stage.setTitle("Onses - Uno");
stage.setScene(new Scene(appController.render())); stage.setScene(new Scene(appController.render()));
stage.show(); stage.show();
} }

21
src/main/java/de/hsfulda/onses/controllers/AppController.java

@ -2,27 +2,38 @@ package de.hsfulda.onses.controllers;
import de.hsfulda.onses.Main; import de.hsfulda.onses.Main;
import de.hsfulda.onses.models.Game; import de.hsfulda.onses.models.Game;
import de.hsfulda.onses.services.GameService;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.stage.Stage;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
public class AppController implements Controller { public class AppController implements Controller {
private final Game game;
private final GameService gameService;
private final Stage stage;
public AppController(Game game) {
this.game = game;
public AppController(GameService gameService, Stage stage) {
this.gameService = gameService;
this.stage = stage;
} }
@Override @Override
public Parent render() throws IOException { public Parent render() throws IOException {
final Parent parent = FXMLLoader.load(Main.class.getResource("views/app.fxml"));
GameController gameController = new GameController(gameService);
final Parent parent = FXMLLoader.load(Objects.requireNonNull(Main.class.getResource("views/app.fxml")));
Button button = (Button) parent.lookup("#startGameBtn"); Button button = (Button) parent.lookup("#startGameBtn");
button.setOnAction(e -> { button.setOnAction(e -> {
System.out.println("Pressed");
try {
stage.setScene(new Scene(gameController.render()));
stage.setTitle("Onses - Uno Game");
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}); });
return parent; return parent;
} }

57
src/main/java/de/hsfulda/onses/controllers/CardController.java

@ -0,0 +1,57 @@
package de.hsfulda.onses.controllers;
import de.hsfulda.onses.Main;
import de.hsfulda.onses.models.Card;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import java.io.IOException;
import java.util.Objects;
public class CardController implements Controller {
private Card card;
public CardController(Card card) {
this.card = card;
}
@Override
public Parent render() throws IOException {
final Parent parent = FXMLLoader.load(Objects.requireNonNull(Main.class.getResource("views/card.fxml")));
final Pane mainPane = (Pane) parent.lookup("#cardPane");
final Label cardName = (Label) parent.lookup("#labelName");
switch(card.getColor()) {
case RED -> mainPane.setStyle(addStyle(mainPane.getStyle(), "-fx-background-color: red"));
case BLUE -> mainPane.setStyle(addStyle(mainPane.getStyle(), "-fx-background-color: blue"));
case GREEN -> mainPane.setStyle(addStyle(mainPane.getStyle(), "-fx-background-color: green"));
case YELLOW -> mainPane.setStyle(addStyle(mainPane.getStyle(), "-fx-background-color: yellow"));
default -> mainPane.setStyle(addStyle(mainPane.getStyle(), "-fx-background-color: black"));
}
switch(card.getValue()) {
case ONE -> cardName.setText("1");
case TWO -> cardName.setText("2");
case THREE -> cardName.setText("3");
case FOUR -> cardName.setText("4");
case FIVE -> cardName.setText("5");
case SIX -> cardName.setText("6");
case SEVEN -> cardName.setText("7");
case EIGHT -> cardName.setText("8");
case NINE -> cardName.setText("9");
case SKIP -> cardName.setText("skip player");
case CHOOSE -> cardName.setText("wish card");
case DRAWTWO -> cardName.setText("+2");
case REVERSE -> cardName.setText("reverse");
}
return parent;
}
private String addStyle(String oldStyle, String newStyle) {
return oldStyle + "; " + newStyle;
}
}

54
src/main/java/de/hsfulda/onses/controllers/GameController.java

@ -0,0 +1,54 @@
package de.hsfulda.onses.controllers;
import de.hsfulda.onses.Main;
import de.hsfulda.onses.models.Card;
import de.hsfulda.onses.models.Game;
import de.hsfulda.onses.services.GameService;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import java.io.IOException;
import java.util.Objects;
public class GameController implements Controller {
private final GameService gameService;
private final Game game;
public GameController(GameService gameService) {
this.gameService = gameService;
this.game = gameService.getGame();
}
@Override
public Parent render() throws IOException {
final Parent parent = FXMLLoader.load(Objects.requireNonNull(Main.class.getResource("views/game.fxml")));
final Pane lastPlayedCardPane = (Pane) parent.lookup("#lastPlayedCardPane");
final Pane enemyPane = (Pane) parent.lookup("#enemyPane");
final Pane playerPane = (Pane) parent.lookup("#playerPane");
final Button playButton = (Button) parent.lookup("#playCardBtn");
CardController lastPlayedCardController = new CardController(game.getLastPlayedCard());
PlayerController playerController = new PlayerController(gameService.getGame().getPlayerService().getPlayerList().getFirst());
PlayerController enemyController = new PlayerController(gameService.getGame().getPlayerService().getPlayerList().getLast());
game.listeners().addPropertyChangeListener(Game.PROPERTY_LAST_PLAYED_CARD, e -> {
lastPlayedCardPane.getChildren().removeAll();
try {
lastPlayedCardPane.getChildren().add(new CardController((Card) e.getNewValue()).render());
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
playButton.setOnAction(e -> {
gameService.playCard(new Card().setColor(Card.Color.GREEN).setValue(Card.Value.ONE));
});
lastPlayedCardPane.getChildren().add(lastPlayedCardController.render());
playerPane.getChildren().add(playerController.render());
enemyPane.getChildren().add(enemyController.render());
return parent;
}
}

47
src/main/java/de/hsfulda/onses/controllers/PlayerController.java

@ -0,0 +1,47 @@
package de.hsfulda.onses.controllers;
import de.hsfulda.onses.Main;
import de.hsfulda.onses.models.Card;
import de.hsfulda.onses.models.Player;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Objects;
public class PlayerController implements Controller {
private final Player player;
public PlayerController(Player player) {
this.player = player;
}
@Override
public Parent render() throws IOException {
final Parent parent = FXMLLoader.load(Objects.requireNonNull(Main.class.getResource("views/player.fxml")));
final Label playerNameLabel = (Label) parent.lookup("#playerNameLabel");
final HBox cards = (HBox) parent.lookup("#cardsHBox");
for(Card card : player.getPlayerDeck()) {
cards.getChildren().add(new CardController(card).render());
}
player.listeners().addPropertyChangeListener(Player.PROPERTY_PLAYER_DECK, e -> {
cards.getChildren().clear();
for(Card card : player.getPlayerDeck()) {
try {
cards.getChildren().add(new CardController(card).render());
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
});
playerNameLabel.setText("Test");
return parent;
}
}

36
src/main/java/de/hsfulda/onses/models/Player.java

@ -12,6 +12,9 @@ public class Player {
private PlayerService playerService; private PlayerService playerService;
private Game game; private Game game;
private String playerName;
private boolean enemy;
private Card currentCard;
private final ArrayList<Card> playerDeck = new ArrayList<>(); private final ArrayList<Card> playerDeck = new ArrayList<>();
public ArrayList<Card> getPlayerDeck() { public ArrayList<Card> getPlayerDeck() {
@ -24,6 +27,12 @@ public class Player {
this.firePropertyChange(PROPERTY_PLAYER_DECK, oldplayerDeck, playerDeck); this.firePropertyChange(PROPERTY_PLAYER_DECK, oldplayerDeck, playerDeck);
} }
public void removeCardFromPlayerDeck(Card card) {
final ArrayList<Card> oldPlayerDeck = new ArrayList<>(this.playerDeck);
this.playerDeck.remove(card);
this.firePropertyChange(PROPERTY_PLAYER_DECK, oldPlayerDeck, playerDeck);
}
public PlayerService getPlayerService() { public PlayerService getPlayerService() {
return playerService; return playerService;
} }
@ -42,6 +51,33 @@ public class Player {
return this; return this;
} }
public String getPlayerName() {
return playerName;
}
public Player setPlayerName(String playerName) {
this.playerName = playerName;
return this;
}
public boolean isEnemy() {
return enemy;
}
public Player setEnemy(boolean enemy) {
this.enemy = enemy;
return this;
}
public Card getCurrentCard() {
return currentCard;
}
public Player setCurrentCard(Card currentCard) {
this.currentCard = currentCard;
return this;
}
public PropertyChangeSupport listeners() { public PropertyChangeSupport listeners() {
if(this.listeners == null) { if(this.listeners == null) {
this.listeners = new PropertyChangeSupport(this); this.listeners = new PropertyChangeSupport(this);

17
src/main/java/de/hsfulda/onses/services/GameService.java

@ -4,6 +4,7 @@ import de.hsfulda.onses.models.Card;
import de.hsfulda.onses.models.Game; import de.hsfulda.onses.models.Game;
import de.hsfulda.onses.models.Player; import de.hsfulda.onses.models.Player;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Random; import java.util.Random;
@ -23,6 +24,7 @@ public class GameService {
public GameService(Game game) { public GameService(Game game) {
this.game = game; this.game = game;
this.game.setGameService(this); this.game.setGameService(this);
this.game.getPlayerService().getPlayerList().getLast().setEnemy(true);
fillDrawDeck(); fillDrawDeck();
shuffleDeck(); shuffleDeck();
setFirstCard(); setFirstCard();
@ -109,6 +111,21 @@ public class GameService {
} }
} }
public void playSeven() {
ArrayList<Card> übergangBot = new ArrayList<>(game.getPlayerService().getPlayerList().getLast().getPlayerDeck());
ArrayList<Card> übergangSpieler = new ArrayList<>(game.getPlayerService().getPlayerList().getFirst().getPlayerDeck());
game.getPlayerService().getPlayerList().getFirst().getPlayerDeck().clear();
for (int i = 0; i < übergangBot.size(); i++) {
game.getPlayerService().getPlayerList().getFirst().getPlayerDeck().add(übergangBot.get(i));
}
game.getPlayerService().getPlayerList().getLast().getPlayerDeck().clear();
for (int i = 0; i < übergangSpieler.size(); i++) {
game.getPlayerService().getPlayerList().getLast().getPlayerDeck().add(übergangSpieler.get(i));
}
}
public void checkForWin() { public void checkForWin() {
if (this.game.getPlayerService().getPlayerList().getFirst().getPlayerDeck().isEmpty() || this.game.getPlayerService().getPlayerList().getLast().getPlayerDeck().isEmpty()) { if (this.game.getPlayerService().getPlayerList().getFirst().getPlayerDeck().isEmpty() || this.game.getPlayerService().getPlayerList().getLast().getPlayerDeck().isEmpty()) {
this.game.setGameOver(true); this.game.setGameOver(true);

7
src/main/resources/de/hsfulda/onses/views/app.fxml

@ -5,15 +5,14 @@
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane prefHeight="585.0" prefWidth="1125.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
<AnchorPane prefHeight="456.0" prefWidth="683.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Label layoutX="473.0" layoutY="121.0" text="Uno Game" AnchorPane.leftAnchor="473.0" AnchorPane.topAnchor="121.0">
<Label layoutX="252.0" layoutY="96.0" text="Uno Game" AnchorPane.leftAnchor="252.0" AnchorPane.topAnchor="96.0">
<font> <font>
<Font size="34.0" /> <Font size="34.0" />
</font> </font>
</Label> </Label>
<Button fx:id="startGameBtn" layoutX="495.0" layoutY="275.0" mnemonicParsing="false" text="Start Game" AnchorPane.leftAnchor="495.0" AnchorPane.topAnchor="275.0">
<Button fx:id="startGameBtn" layoutX="274.0" layoutY="257.0" mnemonicParsing="false" text="Start Game" AnchorPane.leftAnchor="274.0" AnchorPane.topAnchor="257.0">
<font> <font>
<Font size="19.0" /> <Font size="19.0" />
</font> </font>

19
src/main/resources/de/hsfulda/onses/views/card.fxml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="cardPane" prefHeight="200.0" prefWidth="130.0" style="-fx-border-color: black; -fx-border-width: 3px;" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label fx:id="labelName" alignment="CENTER" layoutX="45.0" layoutY="91.0" text="1" textAlignment="CENTER" textFill="#da36d2" wrapText="true" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="80.0">
<font>
<Font name="System Bold" size="19.0" />
</font>
</Label>
</children>
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
</AnchorPane>

45
src/main/resources/de/hsfulda/onses/views/game.fxml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<AnchorPane prefHeight="690.0" prefWidth="1254.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button fx:id="btnWishBlue" layoutX="1120.0" layoutY="507.0" mnemonicParsing="false" style="-fx-background-color: blue; -fx-pref-width: 30px; -fx-pref-height: 30px;" AnchorPane.bottomAnchor="153.0" AnchorPane.rightAnchor="104.0">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
</Button>
<Button fx:id="btnWishRed" layoutX="1160.0" layoutY="507.0" mnemonicParsing="false" style="-fx-background-color: red; -fx-pref-width: 30px; -fx-pref-height: 30px; -fx-cursor: pointer;" AnchorPane.bottomAnchor="153.0" AnchorPane.rightAnchor="64.0">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
</Button>
<Button fx:id="btnWishGreen" layoutX="1160.0" layoutY="549.0" mnemonicParsing="false" style="-fx-background-color: green; -fx-pref-width: 30px; -fx-pref-height: 30px; -fx-cursor: pointer;" AnchorPane.bottomAnchor="111.0" AnchorPane.rightAnchor="64.0">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
</Button>
<Button fx:id="btnWishYellow" layoutX="1120.0" layoutY="549.0" mnemonicParsing="false" style="-fx-background-color: yellow; -fx-pref-width: 30px; -fx-pref-height: 30px;" AnchorPane.bottomAnchor="111.0" AnchorPane.rightAnchor="104.0">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
</Button>
<Button fx:id="playCardBtn" layoutX="1100.0" layoutY="616.0" mnemonicParsing="false" text="Play Card">
<font>
<Font size="18.0" />
</font>
</Button>
<Pane fx:id="playerPane" layoutX="18.0" layoutY="460.0" prefHeight="228.0" prefWidth="950.0" style="-fx-border-color: red;" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="18.0" AnchorPane.rightAnchor="286.0" />
<Pane fx:id="enemyPane" layoutX="18.0" layoutY="14.0" prefHeight="228.0" prefWidth="950.0" style="-fx-border-color: red;" AnchorPane.leftAnchor="18.0" AnchorPane.rightAnchor="286.0" AnchorPane.topAnchor="10.0" />
<Pane fx:id="lastPlayedCardPane" layoutX="112.0" layoutY="245.0" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="200.0" prefWidth="130.0" AnchorPane.leftAnchor="112.0" AnchorPane.topAnchor="245.0" />
<Button layoutX="404.0" layoutY="329.0" mnemonicParsing="false" text="Draw Card" AnchorPane.leftAnchor="404.0" AnchorPane.topAnchor="329.0">
<font>
<Font size="18.0" />
</font>
</Button>
</children>
</AnchorPane>

17
src/main/resources/de/hsfulda/onses/views/player.fxml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="228.0" prefWidth="950.0" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label fx:id="playerNameLabel" layoutX="14.0" layoutY="14.0" text="Player Name" AnchorPane.leftAnchor="3.0" AnchorPane.topAnchor="1.0">
<font>
<Font size="17.0" />
</font>
</Label>
<HBox fx:id="cardsHBox" layoutY="22.0" prefHeight="200.0" prefWidth="940.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="25.0" />
</children>
</AnchorPane>

14
src/test/java/de/hsfulda/onses/ExampleTest.java

@ -1,14 +0,0 @@
package de.hsfulda.onses;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class ExampleTest {
@Test
@DisplayName("Example Test")
public void exampleTest() {
int test = 1 + 1;
assertEquals(2, test);
}
}

31
src/test/java/de/hsfulda/onses/GameServiceTest.java

@ -1,6 +1,7 @@
package de.hsfulda.onses; package de.hsfulda.onses;
import com.sun.jdi.ArrayReference;
import de.hsfulda.onses.models.Game; import de.hsfulda.onses.models.Game;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -11,6 +12,8 @@ import de.hsfulda.onses.models.Card;
import de.hsfulda.onses.models.Player; import de.hsfulda.onses.models.Player;
import de.hsfulda.onses.services.GameService; import de.hsfulda.onses.services.GameService;
import java.util.ArrayList;
public class GameServiceTest { public class GameServiceTest {
@Test @Test
@DisplayName("playCardRedEight") @DisplayName("playCardRedEight")
@ -534,4 +537,32 @@ public class GameServiceTest {
assertTrue(gameService.getGame().getDrawCardDeck().getLast().isFacedown()); assertTrue(gameService.getGame().getDrawCardDeck().getLast().isFacedown());
} }
@DisplayName("PlaySevenPlayerDeckIsNowBotDeck")
public void PlaySevenPlayerDeckIsNowBotDeck() {
GameService gameService = new GameService();
ArrayList<Card> botDeck = new ArrayList<>(gameService.getGame().getPlayerService().getPlayerList().getLast().getPlayerDeck());
gameService.playSeven();
ArrayList<Card> answer = new ArrayList<>(gameService.getGame().getPlayerService().getPlayerList().getFirst().getPlayerDeck());
assertEquals(botDeck, answer);
}
@Test
@DisplayName("PlaySevenBotDeckIsNowPlayerDeck")
public void PlaySevenBotDeckIsNowPlayerDeck() {
GameService gameService = new GameService();
ArrayList<Card> playerDeck = new ArrayList<>(gameService.getGame().getPlayerService().getPlayerList().getFirst().getPlayerDeck());
gameService.playSeven();
ArrayList<Card> answer = new ArrayList<>(gameService.getGame().getPlayerService().getPlayerList().getLast().getPlayerDeck());
assertEquals(playerDeck, answer);
}
@Test
@DisplayName("BotisEnemy")
public void botIsEnemy() {
GameService gameService = new GameService();
boolean answer = gameService.getGame().getPlayerService().getPlayerList().getLast().isEnemy();
boolean expected = true;
assertEquals(expected, answer);
}
} }

32
src/test/java/de/hsfulda/onses/GuiTest.java

@ -0,0 +1,32 @@
package de.hsfulda.onses;
import javafx.stage.Stage;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.testfx.api.FxAssert;
import org.testfx.framework.junit5.ApplicationTest;
import static org.junit.jupiter.api.Assertions.*;
import static org.testfx.matcher.control.LabeledMatchers.*;
public class GuiTest extends ApplicationTest {
private Stage stage;
@Override
public void start(Stage stage) throws Exception {
this.stage = stage;
new App().start(stage);
}
@Test
@DisplayName("Check Window Title")
void checkWindowsTitle() {
assertEquals("Onses - Uno", stage.getTitle());
}
@Test
@DisplayName("Check if window Switch is working")
void checkSceneSwitch() {
clickOn("#startGameBtn");
assertEquals("Onses - Uno Game", stage.getTitle());
}
}

56
src/test/java/de/hsfulda/onses/PlayerTest.java

@ -58,4 +58,60 @@ public class PlayerTest {
assertEquals(expected, answer1); assertEquals(expected, answer1);
assertEquals(expected, answer2); assertEquals(expected, answer2);
} }
@Test
@DisplayName("remove card from player card deck")
void removeCardFromPlayerCardDeck() {
Player player = new Player();
Card card1 = new Card().setColor(Card.Color.RED).setValue(Card.Value.FIVE);
Card card2 = new Card().setColor(Card.Color.GREEN).setValue(Card.Value.ONE);
player.addCardToPlayerDeck(card1);
player.addCardToPlayerDeck(card2);
assertEquals(2, player.getPlayerDeck().size());
player.removeCardFromPlayerDeck(card1);
assertEquals(1, player.getPlayerDeck().size());
assertEquals(card2, player.getPlayerDeck().getFirst());
}
@Test
@DisplayName("GivePlayerName")
public void GivePlayerName() {
Player player = new Player();
String expected = "Spieler";
player.setPlayerName(expected);
String answer = player.getPlayerName();
assertEquals(expected, answer);
}
@Test
@DisplayName("ChangePlayerName")
public void ChangePlayerName() {
PlayerService playerService = new PlayerService();
String name1 = "Name1";
String name2 = "Name2";
playerService.getPlayerList().getFirst().setPlayerName(name1);
playerService.getPlayerList().getFirst().setPlayerName(name2);
String answer = playerService.getPlayerList().getFirst().getPlayerName();
assertEquals(name2, answer);
}
@Test
@DisplayName("BotIsEnemy")
public void BotIsEnemy() {
Player player = new Player();
player.setEnemy(true);
assertTrue(player.isEnemy());
}
@Test
@DisplayName("CurrentCard")
public void CurrentCard() {
Player player = new Player();
Card card = new Card().setValue(Card.Value.ONE).setColor(Card.Color.GREEN);
player.setCurrentCard(card);
assertEquals(card, player.getCurrentCard());
}
} }
Loading…
Cancel
Save