| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package cz.davza.studentadventure.commands;
- import cz.davza.studentadventure.TestHelpers;
- import cz.davza.studentadventure.enums.CommandState;
- import cz.davza.studentadventure.enums.DeprivationState;
- import cz.davza.studentadventure.objects.CommandResult;
- import cz.davza.studentadventure.objects.GameData;
- import cz.davza.studentadventure.objects.Player;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import static cz.davza.studentadventure.TestHelpers.execute;
- import static org.junit.jupiter.api.Assertions.*;
- class StudyCommandTest {
- private GameData context;
- private Player player;
- @BeforeEach
- void setUp() {
- context = TestHelpers.buildGameData();
- player = context.getPlayer();
- }
- @Test
- void studyOneHourIncreasesIntelligenceBy5() {
- execute("study 1", context);
- assertEquals(10, player.getIntelligence().getValue());
- }
- @Test
- void studyOneHourCostsEnergy() {
- int before = player.getEnergy().getValue();
- execute("study 1", context);
- assertTrue(player.getEnergy().getValue() < before);
- }
- @Test
- void studyOneHourIncreasesStress() {
- execute("study 1", context);
- assertTrue(player.getStress().getValue() > 0);
- }
- @Test
- void studyOneHourAdvancesTimeByOneHour() {
- int before = context.getTime().getHour();
- execute("study 1", context);
- assertEquals(before + 1, context.getTime().getHour());
- }
- @Test
- void studyMultipleHoursStacksGains() {
- execute("study 3", context);
- assertEquals(5 + 15, player.getIntelligence().getValue());
- }
- @Test
- void studyMultipleHoursAdvancesTimeByThatMany() {
- int before = context.getTime().getHour();
- execute("study 3", context);
- assertEquals(before + 3, context.getTime().getHour());
- }
- @Test
- void studyWithNoParamsReturnsInvalidParams() {
- CommandResult result = execute("study", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void studyWithZeroHoursReturnsInvalidParams() {
- CommandResult result = execute("study 0", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void studyWithNegativeHoursReturnsInvalidParams() {
- CommandResult result = execute("study -1", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void studyWithNonNumberReturnsInvalidParams() {
- CommandResult result = execute("study abc", context);
- assertEquals(CommandState.INVALID_PARAMS, result.getResultState());
- }
- @Test
- void studyWhenEnergyZeroReturnsFailed() {
- player.getEnergy().decrease(100);
- CommandResult result = execute("study 1", context);
- assertEquals(CommandState.FAILED, result.getResultState());
- }
- @Test
- void studyStopsEarlyWhenEnergyRunsOut() {
- player.getEnergy().decrease(85); // 15 energy left, first hour costs ~10, second ~13 → stops at 1
- CommandResult result = execute("study 2", context);
- assertEquals(CommandState.SUCCESS, result.getResultState());
- assertTrue(result.getResultMessage().contains("run out of energy"));
- }
- @Test
- void studyAddsToHoursAwakeCounter() {
- execute("study 3", context);
- // 3 hours awake is still NORMAL (threshold is 14)
- assertEquals(DeprivationState.NORMAL, player.getDeprivationState());
- }
- @Test
- void studyReturnsSuccessState() {
- CommandResult result = execute("study 1", context);
- assertEquals(CommandState.SUCCESS, result.getResultState());
- }
- @Test
- void studyCostsMoreEnergyWithDeprivation() {
- // Push player to deprived state
- player.addHoursAwake(25);
- int energyBefore = player.getEnergy().getValue();
- execute("study 1", context);
- int energyCostDeprived = energyBefore - player.getEnergy().getValue();
- // Reset and do the same at normal state
- context = TestHelpers.buildGameData();
- player = context.getPlayer();
- int energyBefore2 = player.getEnergy().getValue();
- execute("study 1", context);
- int energyCostNormal = energyBefore2 - player.getEnergy().getValue();
- assertTrue(energyCostDeprived > energyCostNormal);
- }
- }
|