summaryrefslogtreecommitdiff
path: root/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/SlideSpecCodecTest.kt
blob: 34f99f9b72a53be832badeaa9f497f64c063f5f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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\""))
    }
}