mourning-ember / src / test / java / dev / llan / model / board / TileTest.java
TileTest.java
Raw
package dev.llan.model.board;

import dev.llan.model.pieces.inanimates.Door;
import dev.llan.model.board.Tile.TileType;
import dev.llan.model.pieces.player.MainCharacter;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class TileTest {
  private Tile tile;

  @BeforeEach
  void setUp() {
    tile = new Tile(new Point(0, 0), TileType.VACANT);
  }

  @Test
  void addEntity() {
    tile.addEntity(new MainCharacter(new Point(0, 0), null));

    assertEquals(tile.getType(), TileType.OCCUPIED);
    assertTrue(tile.getEntity().isPresent());
  }

  @Test
  void removeEntity() {
    tile.addEntity(new MainCharacter(new Point(0, 0), null));

    assertTrue(tile.getEntity().isPresent());

    tile.removeEntity();

    assertEquals(tile.getType(), TileType.VACANT);
    assertTrue(tile.getEntity().isEmpty());
  }

  @Test
  void addInanimate() {
    tile.addInanimate(new Door(new Point(0, 0), null));

    assertEquals(tile.getType(), TileType.INTERACTABLE);
    assertTrue(tile.getInanimate().isPresent());
  }

  @Test
  void removeInanimate() {
    tile.addInanimate(new Door(new Point(0, 0), null));

    assertTrue(tile.getInanimate().isPresent());

    tile.removeInanimate();

    assertEquals(tile.getType(), TileType.VACANT);
    assertTrue(tile.getInanimate().isEmpty());
  }

  @Test
  void setVisible() {
    assertFalse(tile.isVisible());

    tile.setVisible(true);

    assertTrue(tile.isVisible());
  }

  @Test
  void testClone() {
    Tile clone = tile.clone();

    assertNotSame(tile, clone);

    assertEquals(tile.getType(), clone.getType());
    assertEquals(tile.getTerrainCost(), clone.getTerrainCost());
  }
}