package jp.orgflow.bridge import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue class SlideSpecCodecTest { @Test fun codecRoundtripsSlidesWithImages() { val slides = listOf( SlideSpecData( id = "s1", title = "Codec", backgroundArgb = 0xFFFFF8E1, boxes = listOf( SlideSpecBox( kind = SlideSpecBoxKind.TEXT, xPt = 54.0, yPt = 40.0, widthPt = 400.0, heightPt = 60.0, textRuns = listOf(SlideSpecTextRun("hi", bold = true, italic = true, sizePt = 24.0, colorArgb = 0xFF0000FF)), ), SlideSpecBox(kind = SlideSpecBoxKind.IMAGE, xPt = 5.0, yPt = 6.0, widthPt = 7.0, heightPt = 8.0, imageRef = "img1"), SlideSpecBox( kind = SlideSpecBoxKind.TABLE, xPt = 9.0, yPt = 10.0, widthPt = 11.0, heightPt = 12.0, tableCells = listOf(listOf("a", "b"), listOf("1", "2")), ), ), images = mapOf("img1" to byteArrayOf(1, 2, 3, -1)), notes = "note", ), ) assertEquals(slides, SlideSpecCodec.decode(SlideSpecCodec.encode(slides))) } @Test fun codecHandlesEmptyDeckAndDefaults() { assertEquals(emptyList(), SlideSpecCodec.decode(SlideSpecCodec.encode(emptyList()))) val minimal = SlideSpecData(id = "s1") assertEquals(minimal, SlideSpecCodec.decode(SlideSpecCodec.encode(listOf(minimal))).single()) } @Test fun codecIgnoresUnknownKeys() { val encoded = SlideSpecCodec.encode(listOf(SlideSpecData(id = "s1", title = "t"))) assertTrue(encoded.contains("\"s1\"")) } }