Establish watch relay contracts and platform package wiring

This commit is contained in:
2026-09-18 09:34:26 +04:00
parent a92698e1e6
commit 9b87299bf5
22 changed files with 778 additions and 159 deletions
@@ -0,0 +1,26 @@
import Foundation
import Testing
import RemoteCore
import WatchBridgeCommon
@Test func payloadUsesUnixMillisecondsInBothDirections() throws {
let issued = Date(timeIntervalSince1970: 1_700_000_000.125)
let envelope = CommandEnvelope(
sessionID: UUID(), televisionID: UUID(), sequence: 1,
issuedAt: issued, expiresAt: issued.addingTimeInterval(0.5), command: .right
)
let container = try RelayContainer(kind: .command, value: envelope)
let data = container.payload
#expect(container.schemaVersion == RelayWire.schemaVersion)
#expect(container.kind == .command)
let object = try #require(JSONSerialization.jsonObject(with: data) as? [String: Any])
#expect((object["issuedAt"] as? Double) == 1_700_000_000_125)
#expect((object["expiresAt"] as? Double) == 1_700_000_000_625)
#expect(try RelayJSON.decode(CommandEnvelope.self, from: data) == envelope)
}
@Test func outgoingContainerRejectsOversizedPayload() {
#expect(throws: RelayContractError.payloadTooLarge) {
try RelayContainer(kind: .error, value: String(repeating: "x", count: RelayWire.maximumPayloadBytes))
}
}