summaryrefslogtreecommitdiff
path: root/modules/zero-bridge-api/src/commonTest
diff options
context:
space:
mode:
authorketsuban <ketsuban@kukuri.dev>2026-09-03 10:10:18 +0000
committerketsuban <ketsuban@kukuri.dev>2026-09-03 10:10:18 +0000
commit20fbdb7c15fd74efc62833d295373b0ce601e9e5 (patch)
tree36fa734710c60f3f2a2ac3eac27daea3d604b885 /modules/zero-bridge-api/src/commonTest
downloadkukuri-20fbdb7c15fd74efc62833d295373b0ce601e9e5.tar.gz
kukuri-20fbdb7c15fd74efc62833d295373b0ce601e9e5.tar.bz2
kukuri-20fbdb7c15fd74efc62833d295373b0ce601e9e5.zip
kukuri reset: welcome-only app shell + bridge/vendor modules + CI infra
Full pre-reset history preserved on branch backup/full-pre-reset (2ccab79).
Diffstat (limited to 'modules/zero-bridge-api/src/commonTest')
-rw-r--r--modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/SlideSpecCodecTest.kt54
-rw-r--r--modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/ZeroBridgeApiTest.kt29
2 files changed, 83 insertions, 0 deletions
diff --git a/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/SlideSpecCodecTest.kt b/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/SlideSpecCodecTest.kt
new file mode 100644
index 0000000..34f99f9
--- /dev/null
+++ b/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/SlideSpecCodecTest.kt
@@ -0,0 +1,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\""))
+ }
+}
diff --git a/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/ZeroBridgeApiTest.kt b/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/ZeroBridgeApiTest.kt
new file mode 100644
index 0000000..1a392c9
--- /dev/null
+++ b/modules/zero-bridge-api/src/commonTest/kotlin/jp/orgflow/bridge/ZeroBridgeApiTest.kt
@@ -0,0 +1,29 @@
+package jp.orgflow.bridge
+
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+import kotlin.test.assertTrue
+
+class ZeroBridgeApiTest {
+ @Test
+ fun storageEstimate() {
+ val est = StorageEstimate(100L, 1000L, 10.0)
+ assertEquals(900L, est.availableBytes())
+ }
+
+ @Test
+ fun transportFrame() {
+ val frame = HostTransportFrame("alice", "bob", byteArrayOf(1, 2, 3), "data")
+ assertEquals("alice", frame.from)
+ assertEquals("bob", frame.to)
+ assertTrue(frame.payload.contentEquals(byteArrayOf(1, 2, 3)))
+ }
+
+ @Test
+ fun bridgeException() {
+ val e = BridgeException("test", RuntimeException("cause"))
+ assertEquals("test", e.message)
+ assertNotNull(e.cause)
+ }
+} \ No newline at end of file