Add more opening hour tests
This commit is contained in:
parent
c9241320af
commit
34180ae6b4
@ -28,7 +28,7 @@ class OpeningScheduleTest(val date: LocalDateTime, val expected: Boolean) {
|
|||||||
* Saturday: 12:00 - 12:30
|
* Saturday: 12:00 - 12:30
|
||||||
* Sunday: 23:00 - Mon. 01:00
|
* Sunday: 23:00 - Mon. 01:00
|
||||||
*/
|
*/
|
||||||
openingHours = persistentListOf(
|
openingHours = setOf(
|
||||||
OpeningHours(
|
OpeningHours(
|
||||||
dayOfWeek = DayOfWeek.MONDAY,
|
dayOfWeek = DayOfWeek.MONDAY,
|
||||||
startTime = LocalTime.of(18, 0),
|
startTime = LocalTime.of(18, 0),
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import de.mm20.launcher2.locations.providers.openstreetmaps.parseOpeningSchedule
|
|||||||
import de.mm20.launcher2.search.location.OpeningHours
|
import de.mm20.launcher2.search.location.OpeningHours
|
||||||
import de.mm20.launcher2.search.location.OpeningSchedule
|
import de.mm20.launcher2.search.location.OpeningSchedule
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
import org.junit.Ignore
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import java.time.DayOfWeek
|
import java.time.DayOfWeek
|
||||||
import java.time.LocalTime
|
import java.time.LocalTime
|
||||||
@ -11,16 +12,8 @@ import java.time.Month
|
|||||||
|
|
||||||
class OpeningHoursTest {
|
class OpeningHoursTest {
|
||||||
|
|
||||||
private infix fun OpeningSchedule?.assertEqualTo(actual: OpeningSchedule?) = when (this) {
|
private infix fun OpeningSchedule?.assertEqualTo(actual: OpeningSchedule?) {
|
||||||
is OpeningSchedule.TwentyFourSeven -> Assert.assertTrue(actual is OpeningSchedule.TwentyFourSeven)
|
Assert.assertEquals(this, actual)
|
||||||
is OpeningSchedule.Hours -> {
|
|
||||||
actual as OpeningSchedule.Hours
|
|
||||||
Assert.assertEquals(openingHours.size, actual.openingHours.size)
|
|
||||||
val diff = openingHours.toSet() - actual.openingHours.toSet()
|
|
||||||
Assert.assertTrue("Set difference not empty: $diff", diff.isEmpty())
|
|
||||||
}
|
|
||||||
|
|
||||||
null -> Assert.assertNull(actual)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun scheduleAt(
|
private fun scheduleAt(
|
||||||
@ -45,14 +38,14 @@ class OpeningHoursTest {
|
|||||||
OpeningHours(
|
OpeningHours(
|
||||||
it, LocalTime.of(8, 0), Duration.ofHours(11)
|
it, LocalTime.of(8, 0), Duration.ofHours(11)
|
||||||
)
|
)
|
||||||
}
|
}.toSet()
|
||||||
) assertEqualTo parseOpeningSchedule(
|
) assertEqualTo parseOpeningSchedule(
|
||||||
"08:00-19:00"
|
"08:00-19:00"
|
||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testDayOfWeek() = OpeningSchedule.Hours(
|
fun testDayOfWeek() = OpeningSchedule.Hours(
|
||||||
listOf(
|
setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
||||||
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
||||||
OpeningHours(DayOfWeek.THURSDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
OpeningHours(DayOfWeek.THURSDAY, LocalTime.of(17, 0), Duration.ofHours(5)),
|
||||||
@ -66,7 +59,7 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMultipleRanges() = OpeningSchedule.Hours(
|
fun testMultipleRanges() = OpeningSchedule.Hours(
|
||||||
listOf(
|
setOf(
|
||||||
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
||||||
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
||||||
OpeningHours(DayOfWeek.THURSDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
OpeningHours(DayOfWeek.THURSDAY, LocalTime.of(11, 0), Duration.ofHours(4)),
|
||||||
@ -89,7 +82,7 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testComment() = OpeningSchedule.Hours(
|
fun testComment() = OpeningSchedule.Hours(
|
||||||
listOf(
|
setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
||||||
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
||||||
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(7)),
|
||||||
@ -104,10 +97,10 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMonthException() {
|
fun testMonthException() {
|
||||||
val expectedNoDecember = listOf(
|
val expectedNoDecember = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8))
|
||||||
)
|
)
|
||||||
val expectedDecember = emptyList<OpeningHours>()
|
val expectedDecember = emptySet<OpeningHours>()
|
||||||
|
|
||||||
for (month in Month.entries) {
|
for (month in Month.entries) {
|
||||||
OpeningSchedule.Hours(
|
OpeningSchedule.Hours(
|
||||||
@ -125,9 +118,9 @@ class OpeningHoursTest {
|
|||||||
@Test
|
@Test
|
||||||
fun testMonthWeekdayException() {
|
fun testMonthWeekdayException() {
|
||||||
val expectedDecember =
|
val expectedDecember =
|
||||||
listOf(OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(4)))
|
setOf(OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(4)))
|
||||||
val expectedNoDecember =
|
val expectedNoDecember =
|
||||||
listOf(OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8)))
|
setOf(OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8)))
|
||||||
|
|
||||||
for (month in Month.entries) {
|
for (month in Month.entries) {
|
||||||
OpeningSchedule.Hours(
|
OpeningSchedule.Hours(
|
||||||
@ -144,10 +137,10 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMonthSpanException() {
|
fun testMonthSpanException() {
|
||||||
val expectedInRange = listOf(
|
val expectedInRange = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(4))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(4))
|
||||||
)
|
)
|
||||||
val expectedOutOfRange = listOf(
|
val expectedOutOfRange = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8, 0), Duration.ofHours(8))
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -166,7 +159,7 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testSundayOff() = OpeningSchedule.Hours(
|
fun testSundayOff() = OpeningSchedule.Hours(
|
||||||
listOf(
|
setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
||||||
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
OpeningHours(DayOfWeek.TUESDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
||||||
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
OpeningHours(DayOfWeek.WEDNESDAY, LocalTime.of(11, 0), Duration.ofHours(10)),
|
||||||
@ -180,10 +173,10 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testNthWeekday() {
|
fun testNthWeekday() {
|
||||||
val usualWeek = listOf(
|
val usualWeek = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
||||||
)
|
)
|
||||||
val specialMondayWeek = listOf(
|
val specialMondayWeek = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4))
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -202,10 +195,10 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testLastNthWeekday() {
|
fun testLastNthWeekday() {
|
||||||
val usualWeek = listOf(
|
val usualWeek = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
||||||
)
|
)
|
||||||
val specialMondayWeek = listOf(
|
val specialMondayWeek = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4))
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -224,11 +217,11 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testMondayOnDecember() {
|
fun testMondayOnDecember() {
|
||||||
val december = listOf(
|
val december = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4)),
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(4)),
|
||||||
OpeningHours(DayOfWeek.FRIDAY, LocalTime.of(8,0), Duration.ofHours(2))
|
OpeningHours(DayOfWeek.FRIDAY, LocalTime.of(8,0), Duration.ofHours(2))
|
||||||
)
|
)
|
||||||
val notDecember = listOf(
|
val notDecember = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8)),
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8)),
|
||||||
OpeningHours(DayOfWeek.FRIDAY, LocalTime.of(8,0), Duration.ofHours(2))
|
OpeningHours(DayOfWeek.FRIDAY, LocalTime.of(8,0), Duration.ofHours(2))
|
||||||
)
|
)
|
||||||
@ -247,24 +240,24 @@ class OpeningHoursTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testAllTogether() {
|
fun testAllTogether() {
|
||||||
val dec = listOf(
|
val dec = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
||||||
) + listOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.SATURDAY).map {
|
) + setOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.SATURDAY).map {
|
||||||
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
||||||
}
|
}
|
||||||
val janMar = listOf(
|
val janMar = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(6,0), Duration.ofHours(6))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(6,0), Duration.ofHours(6))
|
||||||
) + listOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
) + setOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
||||||
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
||||||
}
|
}
|
||||||
val aug = listOf(
|
val aug = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(0,30), Duration.ofMinutes(45))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(0,30), Duration.ofMinutes(45))
|
||||||
) + listOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
) + listOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
||||||
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
||||||
}
|
}
|
||||||
val elze = listOf(
|
val elze = setOf(
|
||||||
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
OpeningHours(DayOfWeek.MONDAY, LocalTime.of(8,0), Duration.ofHours(8))
|
||||||
) + listOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
) + setOf(DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY).map {
|
||||||
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
OpeningHours(it, LocalTime.of(17,0), Duration.ofHours(8))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,4 +273,33 @@ class OpeningHoursTest {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testSunriseSunset() {
|
||||||
|
// Not supported, but make sure it doesn't crash
|
||||||
|
OpeningSchedule.Hours(emptySet()) assertEqualTo parseOpeningSchedule("sunrise-sunset")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Ignore("Expected to fail with the current implementation")
|
||||||
|
// TODO: Fix parseOpeningSchedule to pass this test
|
||||||
|
fun testEvenOddWeeks() {
|
||||||
|
OpeningSchedule.Hours(
|
||||||
|
setOf(
|
||||||
|
OpeningHours(dayOfWeek = DayOfWeek.WEDNESDAY, startTime = LocalTime.of(9, 0), duration = Duration.ofHours(3)),
|
||||||
|
)
|
||||||
|
) assertEqualTo parseOpeningSchedule(
|
||||||
|
"week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00",
|
||||||
|
LocalDateTime.of(2025, Month.APRIL, 18, 0, 0)
|
||||||
|
)
|
||||||
|
|
||||||
|
OpeningSchedule.Hours(
|
||||||
|
setOf(
|
||||||
|
OpeningHours(dayOfWeek = DayOfWeek.FRIDAY, startTime = LocalTime.of(9, 0), duration = Duration.ofHours(3)),
|
||||||
|
)
|
||||||
|
) assertEqualTo parseOpeningSchedule(
|
||||||
|
"week 1-53/2 Fr 09:00-12:00; week 2-52/2 We 09:00-12:00",
|
||||||
|
LocalDateTime.of(2025, Month.APRIL, 10, 0, 0)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user