package dev.castarr.tv.data

import org.junit.Assert.assertEquals
import org.junit.Test

class XmltvWindowTest {

    private fun p(startMin: Long, endMin: Long, title: String) =
        Programme(startMin * 60_000, endMin * 60_000, title)

    private val schedule = listOf(
        p(0, 60, "Läuft gerade"),
        p(60, 120, "Gleich danach"),
        p(150, 210, "In zweieinhalb Stunden"),
        p(300, 360, "Deutlich später"),
    )

    @Test
    fun `returns programmes overlapping the window`() {
        val titles = XmltvParser.programmesIn(schedule, 30 * 60_000, 180 * 60_000).map { it.title }
        assertEquals(listOf("Läuft gerade", "Gleich danach", "In zweieinhalb Stunden"), titles)
    }

    @Test
    fun `excludes programmes outside the window`() {
        val titles = XmltvParser.programmesIn(schedule, 0, 60 * 60_000).map { it.title }
        assertEquals(listOf("Läuft gerade"), titles)
    }

    @Test
    fun `handles a missing schedule`() {
        assertEquals(emptyList<Programme>(), XmltvParser.programmesIn(null, 0, 1_000))
    }
}
