package dev.castarr.tv import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test class CrashLogTest { @Test fun `an entry names the time, the version and the top of the stack`() { val error = IllegalStateException("Senderliste leer") // 26.08.2026, 19:12 (MESZ) val entry = CrashLog.render(1787764320000L, "0.12.0", error) val lines = entry.lines() assertTrue(lines.first().contains("0.12.0")) assertTrue(lines.first().contains("26.08.2026")) assertTrue(entry.contains("IllegalStateException")) assertTrue(entry.contains("Senderliste leer")) } @Test fun `a long stack is cut down to something readable`() { val error = RuntimeException("tief") val entry = CrashLog.render(0L, "0.12.0", error) // Kopfzeile plus höchstens TRACE_LINES Zeilen Stack. assertTrue(entry.lines().size <= CrashLog.TRACE_LINES + 1) } @Test fun `only the newest entries are kept`() { val entries = (1..15).map { "Absturz $it" } val kept = CrashLog.trim(entries) assertEquals(CrashLog.KEEP, kept.size) assertEquals("Absturz 15", kept.last()) assertEquals("Absturz 6", kept.first()) } @Test fun `blank entries are dropped instead of counting`() { assertEquals(listOf("echt"), CrashLog.trim(listOf("", " ", "echt"))) } @Test fun `nothing recorded stays nothing`() { assertEquals(emptyList(), CrashLog.trim(emptyList())) } }