From 65d723d53c72e9e75c0823c9ae680c65ef7e9941 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 19 Dec 2025 03:53:49 +0100 Subject: [PATCH] test: add canvas.present IPC coverage --- .../ClawdisIPCTests/CanvasIPCTests.swift | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 apps/macos/Tests/ClawdisIPCTests/CanvasIPCTests.swift diff --git a/apps/macos/Tests/ClawdisIPCTests/CanvasIPCTests.swift b/apps/macos/Tests/ClawdisIPCTests/CanvasIPCTests.swift new file mode 100644 index 000000000..f0920978a --- /dev/null +++ b/apps/macos/Tests/ClawdisIPCTests/CanvasIPCTests.swift @@ -0,0 +1,41 @@ +import ClawdisIPC +import Foundation +import Testing + +@Suite struct CanvasIPCTests { + @Test func canvasPresentCodableRoundtrip() throws { + let placement = CanvasPlacement(x: 10, y: 20, width: 640, height: 480) + let req: Request = .canvasPresent(session: "main", path: "/index.html", placement: placement) + + let data = try JSONEncoder().encode(req) + let decoded = try JSONDecoder().decode(Request.self, from: data) + + switch decoded { + case let .canvasPresent(session, path, placement): + #expect(session == "main") + #expect(path == "/index.html") + #expect(placement?.x == 10) + #expect(placement?.y == 20) + #expect(placement?.width == 640) + #expect(placement?.height == 480) + default: + Issue.record("expected canvasPresent, got \(decoded)") + } + } + + @Test func canvasPresentDecodesNilPlacementWhenMissing() throws { + let json = """ + {"type":"canvasPresent","session":"s","path":"/"} + """ + let decoded = try JSONDecoder().decode(Request.self, from: Data(json.utf8)) + + switch decoded { + case let .canvasPresent(session, path, placement): + #expect(session == "s") + #expect(path == "/") + #expect(placement == nil) + default: + Issue.record("expected canvasPresent, got \(decoded)") + } + } +}