62 lines
1.9 KiB
Swift
62 lines
1.9 KiB
Swift
import ClawdbotIPC
|
|
import Foundation
|
|
import Testing
|
|
|
|
@Suite struct CameraIPCTests {
|
|
@Test func cameraSnapCodableRoundtrip() throws {
|
|
let req: Request = .cameraSnap(
|
|
facing: .front,
|
|
maxWidth: 640,
|
|
quality: 0.85,
|
|
outPath: "/tmp/test.jpg")
|
|
|
|
let data = try JSONEncoder().encode(req)
|
|
let decoded = try JSONDecoder().decode(Request.self, from: data)
|
|
|
|
switch decoded {
|
|
case let .cameraSnap(facing, maxWidth, quality, outPath):
|
|
#expect(facing == .front)
|
|
#expect(maxWidth == 640)
|
|
#expect(quality == 0.85)
|
|
#expect(outPath == "/tmp/test.jpg")
|
|
default:
|
|
Issue.record("expected cameraSnap, got \(decoded)")
|
|
}
|
|
}
|
|
|
|
@Test func cameraClipCodableRoundtrip() throws {
|
|
let req: Request = .cameraClip(
|
|
facing: .back,
|
|
durationMs: 3000,
|
|
includeAudio: false,
|
|
outPath: "/tmp/test.mp4")
|
|
|
|
let data = try JSONEncoder().encode(req)
|
|
let decoded = try JSONDecoder().decode(Request.self, from: data)
|
|
|
|
switch decoded {
|
|
case let .cameraClip(facing, durationMs, includeAudio, outPath):
|
|
#expect(facing == .back)
|
|
#expect(durationMs == 3000)
|
|
#expect(includeAudio == false)
|
|
#expect(outPath == "/tmp/test.mp4")
|
|
default:
|
|
Issue.record("expected cameraClip, got \(decoded)")
|
|
}
|
|
}
|
|
|
|
@Test func cameraClipDefaultsIncludeAudioToTrueWhenMissing() throws {
|
|
let json = """
|
|
{"type":"cameraClip","durationMs":1234}
|
|
"""
|
|
let decoded = try JSONDecoder().decode(Request.self, from: Data(json.utf8))
|
|
switch decoded {
|
|
case let .cameraClip(_, durationMs, includeAudio, _):
|
|
#expect(durationMs == 1234)
|
|
#expect(includeAudio == true)
|
|
default:
|
|
Issue.record("expected cameraClip, got \(decoded)")
|
|
}
|
|
}
|
|
}
|