feat: extend BindPayload with optional loop field; add setPlayMode service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -50,3 +50,34 @@ final class DeviceInfoLoopTests: XCTestCase {
|
||||
XCTAssertNil(info.loop)
|
||||
}
|
||||
}
|
||||
|
||||
final class BindPayloadEncodingTests: XCTestCase {
|
||||
private func encode(_ payload: BindPayload) throws -> [String: Any] {
|
||||
let data = try JSONEncoder().encode(payload)
|
||||
return try JSONSerialization.jsonObject(with: data) as? [String: Any] ?? [:]
|
||||
}
|
||||
|
||||
func testBindPayloadWithoutLoopOmitsKey() throws {
|
||||
let payload = BindPayload(type: 0x0F, userId: "u1", loop: nil)
|
||||
let dict = try encode(payload)
|
||||
XCTAssertEqual(dict["type"] as? Int, 0x0F)
|
||||
XCTAssertEqual(dict["userId"] as? String, "u1")
|
||||
XCTAssertNil(dict["loop"], "loop key MUST be omitted when nil (not encoded as null)")
|
||||
XCTAssertEqual(dict.count, 2)
|
||||
}
|
||||
|
||||
func testBindPayloadWithLoopIncludesValue() throws {
|
||||
let payload = BindPayload(type: 0x0F, userId: "u1", loop: 1)
|
||||
let dict = try encode(payload)
|
||||
XCTAssertEqual(dict["type"] as? Int, 0x0F)
|
||||
XCTAssertEqual(dict["userId"] as? String, "u1")
|
||||
XCTAssertEqual(dict["loop"] as? Int, 1)
|
||||
XCTAssertEqual(dict.count, 3)
|
||||
}
|
||||
|
||||
func testBindPayloadWithLoopZeroIncludesValue() throws {
|
||||
let payload = BindPayload(type: 0x0F, userId: "u1", loop: 0)
|
||||
let dict = try encode(payload)
|
||||
XCTAssertEqual(dict["loop"] as? Int, 0)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user