package dev.llan.model.pieces.player; import dev.llan.model.Game; import dev.llan.model.GameContainer; import dev.llan.model.board.Grid; import dev.llan.model.board.Point; import dev.llan.model.board.Tile; import dev.llan.model.board.pathfinding.Path; import dev.llan.events.GameEvent; import dev.llan.events.PlayerUpdatedEvent; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; class MainCharacterTest { private MainCharacter player; private Game game; @BeforeEach void setUp() { GameContainer.getInstance().initGame(); game = GameContainer.getInstance().getCurrentGame(); player = (MainCharacter) game.getPlayer(); } @Test void setActivePath() { Path path = new Path(); GameEvent event = player.setActivePath(Optional.of(path)); assertTrue(player.getActivePath().isPresent()); assertInstanceOf(PlayerUpdatedEvent.class, event); } @Test void generateActivePath() { Optional generated = player.generateActivePath(new Point(7, 7)); player.setActivePath(generated); assertTrue(player.getActivePath().isPresent()); Path generatedPath = generated.get(); assertEquals(7, generatedPath.getPath().size()); } @Test void recalculateActivePath() { Optional generated = player.generateActivePath(new Point(7, 7)); player.setActivePath(generated); game.getMap().getGrid().tileAt(new Point(5, 5)).setType(Tile.TileType.UNMOVABLE); Optional event = player.recalculateActivePath(); assertTrue(event.isPresent()); assertInstanceOf(PlayerUpdatedEvent.class, event.get()); assertNotEquals(7, player.getActivePath().get().getPath().size()); } @Test void testClone() { Optional generated = player.generateActivePath(new Point(5, 5)); player.setActivePath(generated); Grid gridClone = game.getMap().cloneGrid(); Player clone = player.clone(gridClone); assertNotEquals(player, clone); assertNotEquals(player.getInventory(), clone.getInventory()); assertNotEquals(player.getActivePath(), clone.getActivePath()); assertNotEquals(player.getStats(), clone.getStats()); assertNotSame(player.getPosition(), clone.getPosition()); assertEquals(player.getInventory().getCoins(), clone.getInventory().getCoins()); assertEquals( player.getActivePath().get().getPath().size(), clone.getActivePath().get().getPath().size()); assertEquals(player.getStats().getHealth(), clone.getStats().getHealth()); assertEquals(player.getStats().getMovement(), clone.getStats().getMovement()); assertEquals(player.getPosition().getRow(), clone.getPosition().getRow()); assertEquals(player.getPosition().getCol(), clone.getPosition().getCol()); } }