package cz.davza.studentadventure.objects; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class GameTimeTest { @Test void startsOnDay1At8() { GameTime time = new GameTime(); assertEquals(1, time.getDay()); assertEquals(8, time.getHour()); } @Test void advanceHoursWithinSameDay() { GameTime time = new GameTime(); time.advanceHours(3); assertEquals(1, time.getDay()); assertEquals(11, time.getHour()); } @Test void advanceHoursRollsOverToNextDay() { GameTime time = new GameTime(); time.advanceHours(20); // 8 + 20 = 28 → day 2, hour 4 assertEquals(2, time.getDay()); assertEquals(4, time.getHour()); } @Test void advanceHoursRollsOverMultipleDays() { GameTime time = new GameTime(); time.advanceHours(48); // 8 + 48 = 56 → day 3, hour 8 assertEquals(3, time.getDay()); assertEquals(8, time.getHour()); } @Test void advanceToNextMorningSetsDay2Hour8() { GameTime time = new GameTime(); time.advanceHours(5); // move to hour 13 time.advanceToNextMorning(); assertEquals(2, time.getDay()); assertEquals(8, time.getHour()); } @Test void notPastDeadlineAtStart() { GameTime time = new GameTime(); assertFalse(time.isPastDeadline()); } @Test void notPastDeadlineJustBeforeExam() { GameTime time = new GameTime(); // advance to day 7, hour 8 — one hour before deadline for (int i = 0; i < 6; i++) time.advanceToNextMorning(); assertEquals(7, time.getDay()); assertEquals(8, time.getHour()); assertFalse(time.isPastDeadline()); } @Test void pastDeadlineAtExactDeadline() { GameTime time = new GameTime(); for (int i = 0; i < 6; i++) time.advanceToNextMorning(); time.advanceHours(1); // day 7, hour 9 assertTrue(time.isPastDeadline()); } @Test void pastDeadlineAfterDay7() { GameTime time = new GameTime(); for (int i = 0; i < 7; i++) time.advanceToNextMorning(); assertTrue(time.isPastDeadline()); } @Test void toStringFormat() { GameTime time = new GameTime(); assertEquals("Day 1, 08:00", time.toString()); } }