From 4160a795742bf9467e4898e6b8807acafd83ef1e Mon Sep 17 00:00:00 2001 From: vantablackTea Date: Tue, 15 Sep 2026 23:50:41 +0300 Subject: [PATCH] tests: added ConvertersTest and LessonTypeTest --- .../agzam/vyatsu/data/local/ConvertersTest.kt | 57 +++++++++++++++++++ .../vyatsu/domain/model/LessonTypeTest.kt | 40 +++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 app/src/test/java/agzam/vyatsu/data/local/ConvertersTest.kt create mode 100644 app/src/test/java/agzam/vyatsu/domain/model/LessonTypeTest.kt diff --git a/app/src/test/java/agzam/vyatsu/data/local/ConvertersTest.kt b/app/src/test/java/agzam/vyatsu/data/local/ConvertersTest.kt new file mode 100644 index 0000000..8ca659d --- /dev/null +++ b/app/src/test/java/agzam/vyatsu/data/local/ConvertersTest.kt @@ -0,0 +1,57 @@ +package agzam.vyatsu.data.local + +import agzam.vyatsu.domain.model.LessonType +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test +import java.time.LocalDate +import java.time.LocalTime + +class ConvertersTest { + + private val converters = Converters() + + @Test + fun localDate_roundTripsThroughEpochDay() { + val date = LocalDate.of(2026, 9, 14) + assertEquals(date, converters.epochDayToLocalDate(converters.localDateToEpochDay(date))) + } + + @Test + fun nullDate_staysNull() { + assertNull(converters.localDateToEpochDay(null)) + assertNull(converters.epochDayToLocalDate(null)) + } + + @Test + fun localTime_roundTripsThroughMinutes() { + assertEquals( + LocalTime.of(8, 20), + converters.minutesToLocalTime(converters.localTimeToMinutes(LocalTime.of(8, 20))) + ) + } + + @Test + fun localTime_boundariesMapToMinutes() { + assertEquals(0, converters.localTimeToMinutes(LocalTime.of(0, 0))) + assertEquals(1439, converters.localTimeToMinutes(LocalTime.of(23, 59))) + } + + @Test + fun nullTime_staysNull() { + assertNull(converters.localTimeToMinutes(null)) + assertNull(converters.minutesToLocalTime(null)) + } + + @Test + fun lessonType_roundTripsEveryValue() { + for (type in LessonType.entries) { + assertEquals(type, converters.stringToLessonType(converters.lessonTypeToString(type))) + } + } + + @Test + fun unknownLessonType_isOther() { + assertEquals(LessonType.OTHER, converters.stringToLessonType("NOPE")) + } +} \ No newline at end of file diff --git a/app/src/test/java/agzam/vyatsu/domain/model/LessonTypeTest.kt b/app/src/test/java/agzam/vyatsu/domain/model/LessonTypeTest.kt new file mode 100644 index 0000000..395e7dc --- /dev/null +++ b/app/src/test/java/agzam/vyatsu/domain/model/LessonTypeTest.kt @@ -0,0 +1,40 @@ +package agzam.vyatsu.domain.model + +import org.junit.Assert.assertEquals +import org.junit.Test + +class LessonTypeTest { + + @Test + fun fromRaw_recognizesExactLabels() { + assertEquals(LessonType.LECTURE, LessonType.fromRaw("Лекция")) + assertEquals(LessonType.PRACTICE, LessonType.fromRaw("Практическое занятие")) + assertEquals(LessonType.LABORATORY, LessonType.fromRaw("Лабораторная работа")) + } + + @Test + fun fromRaw_trimsSurroundingWhitespace() { + assertEquals(LessonType.LECTURE, LessonType.fromRaw(" Лекция ")) + } + + @Test + fun fromRaw_unknownValue_isOther() { + assertEquals(LessonType.OTHER, LessonType.fromRaw("Семинар")) + assertEquals(LessonType.OTHER, LessonType.fromRaw("")) + } + + @Test + fun labels_matchParserVocabulary() { + assertEquals("Лекция", LessonType.LECTURE.label) + assertEquals("Практическое занятие", LessonType.PRACTICE.label) + assertEquals("Лабораторная работа", LessonType.LABORATORY.label) + assertEquals("Занятие", LessonType.OTHER.label) + } + + @Test + fun fromRaw_roundTripsEveryLabel() { + for (type in LessonType.entries) { + assertEquals(type, LessonType.fromRaw(type.label)) + } + } +} \ No newline at end of file