| import Foundation | |
| import Testing | |
| import OpenClawProtocol | |
| struct AnyCodableTests { | |
| func encodesNSNumberBooleansAsJSONBooleans() throws { | |
| let trueData = try JSONEncoder().encode(AnyCodable(NSNumber(value: true))) | |
| let falseData = try JSONEncoder().encode(AnyCodable(NSNumber(value: false))) | |
| #expect(String(data: trueData, encoding: .utf8) == "true") | |
| #expect(String(data: falseData, encoding: .utf8) == "false") | |
| } | |
| func preservesBooleanLiteralsFromJSONSerializationBridge() throws { | |
| let raw = try #require( | |
| JSONSerialization.jsonObject(with: Data(#"{"enabled":true,"nested":{"active":false}}"#.utf8)) | |
| as? [String: Any] | |
| ) | |
| let enabled = try #require(raw["enabled"]) | |
| let nested = try #require(raw["nested"]) | |
| struct RequestEnvelope: Codable { | |
| let params: [String: AnyCodable] | |
| } | |
| let envelope = RequestEnvelope( | |
| params: [ | |
| "enabled": AnyCodable(enabled), | |
| "nested": AnyCodable(nested), | |
| ] | |
| ) | |
| let data = try JSONEncoder().encode(envelope) | |
| let json = try #require(String(data: data, encoding: .utf8)) | |
| #expect(json.contains(#""enabled":true"#)) | |
| #expect(json.contains(#""active":false"#)) | |
| } | |
| } | |