feature/xcodegen-modernize-runner
swift 44 lines 1.51 KB
Raw
1 import XCTest
2 @testable import XCRSControlKit
3
4 final class XCRSControlKitTests: XCTestCase {
5 func testStandardCapabilitiesArePlatformSpecific() {
6 let iOSCapabilities = XCRSControlKitCapabilities.standard(for: .iOS)
7 let tvOSCapabilities = XCRSControlKitCapabilities.standard(for: .tvOS)
8
9 XCTAssertTrue(iOSCapabilities.supports(.touch))
10 XCTAssertFalse(iOSCapabilities.supports(.remoteButtons))
11 XCTAssertTrue(tvOSCapabilities.supports(.remoteButtons))
12 XCTAssertFalse(tvOSCapabilities.supports(.touch))
13 }
14
15 func testCapabilitiesAreCodable() throws {
16 let capabilities = XCRSControlKitCapabilities.standard(for: .macOS)
17 let encoded = try JSONEncoder().encode(capabilities)
18 let decoded = try JSONDecoder().decode(
19 XCRSControlKitCapabilities.self,
20 from: encoded
21 )
22
23 XCTAssertEqual(decoded, capabilities)
24 }
25
26 func testRequestHasStableTransportShape() throws {
27 let request = XCRSControlKitRequest(
28 id: "request-1",
29 method: "device.io.button",
30 parameters: ["button": "select"]
31 )
32
33 let object = try JSONSerialization.jsonObject(
34 with: JSONEncoder().encode(request)
35 ) as? [String: Any]
36
37 XCTAssertEqual(object?["id"] as? String, "request-1")
38 XCTAssertEqual(object?["method"] as? String, "device.io.button")
39 XCTAssertEqual(
40 (object?["parameters"] as? [String: String])?["button"],
41 "select"
42 )
43 }
44 }