ConsumeCommandTest.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package cz.davza.studentadventure.commands;
  2. import cz.davza.studentadventure.Items.Book;
  3. import cz.davza.studentadventure.Items.EnergyDrink;
  4. import cz.davza.studentadventure.TestHelpers;
  5. import cz.davza.studentadventure.enums.CommandState;
  6. import cz.davza.studentadventure.objects.CommandResult;
  7. import cz.davza.studentadventure.objects.GameData;
  8. import cz.davza.studentadventure.objects.Player;
  9. import org.junit.jupiter.api.BeforeEach;
  10. import org.junit.jupiter.api.Test;
  11. import static cz.davza.studentadventure.TestHelpers.execute;
  12. import static org.junit.jupiter.api.Assertions.*;
  13. class ConsumeCommandTest {
  14. private GameData context;
  15. private Player player;
  16. @BeforeEach
  17. void setUp() {
  18. context = TestHelpers.buildGameData();
  19. player = context.getPlayer();
  20. player.getInventory().Add(new EnergyDrink(), 2);
  21. }
  22. @Test
  23. void consumeAppliesItemEffect() {
  24. player.getEnergy().decrease(50);
  25. int before = player.getEnergy().getValue();
  26. execute("consume energy_drink", context);
  27. assertEquals(before + EnergyDrink.ENERGY_RESTORE, player.getEnergy().getValue());
  28. }
  29. @Test
  30. void consumeRemovesOneFromStack() {
  31. execute("consume energy_drink", context);
  32. assertEquals(1, player.getInventory().GetByItemCode("energy_drink").getAmount());
  33. }
  34. @Test
  35. void consumeLastItemClearsInventoryEntry() {
  36. player.getInventory().Add(new EnergyDrink(), 1);
  37. // inventory has 2 from setUp + 1 = 3 total
  38. execute("consume energy_drink", context);
  39. execute("consume energy_drink", context);
  40. execute("consume energy_drink", context);
  41. assertNull(player.getInventory().GetByItemCode("energy_drink"));
  42. }
  43. @Test
  44. void consumeRestoresInventoryCapacity() {
  45. int before = player.getInventory().GetRemainingCapacity();
  46. execute("consume energy_drink", context);
  47. assertEquals(before + new EnergyDrink().getBulk(),
  48. player.getInventory().GetRemainingCapacity());
  49. }
  50. @Test
  51. void consumeReturnsSuccessState() {
  52. CommandResult result = execute("consume energy_drink", context);
  53. assertEquals(CommandState.SUCCESS, result.getResultState());
  54. }
  55. @Test
  56. void consumeItemNotInInventoryReturnsItemNotFound() {
  57. CommandResult result = execute("consume mouldy_cheese", context);
  58. assertEquals(CommandState.ITEM_NOT_FOUND, result.getResultState());
  59. }
  60. @Test
  61. void consumeNonConsumableReturnsFailed() {
  62. player.getInventory().Add(new Book(), 1);
  63. CommandResult result = execute("consume book", context);
  64. assertEquals(CommandState.FAILED, result.getResultState());
  65. }
  66. @Test
  67. void consumeWithNoParamsReturnsInvalidParams() {
  68. CommandResult result = execute("consume", context);
  69. assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
  70. }
  71. @Test
  72. void consumeEnergyCappsAt100() {
  73. // energy already at 100 — drink shouldn't push above 100
  74. execute("consume energy_drink", context);
  75. assertEquals(100, player.getEnergy().getValue());
  76. }
  77. }