From 6ab6377e759f18ae642212fdb1821d8f8be37585 Mon Sep 17 00:00:00 2001 From: Andrew Heard <andrewheard@google.com> Date: Wed, 28 Feb 2024 12:13:35 -0500 Subject: [PATCH] Init numbers as `Decimal` before encoding --- Sources/GoogleAI/JSONValue.swift | 2 +- Tests/GoogleAITests/JSONValueTests.swift | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Sources/GoogleAI/JSONValue.swift b/Sources/GoogleAI/JSONValue.swift index f32fdb5..a279e91 100644 --- a/Sources/GoogleAI/JSONValue.swift +++ b/Sources/GoogleAI/JSONValue.swift @@ -75,7 +75,7 @@ extension JSONValue: Encodable { case .null: try container.encodeNil() case let .number(numberValue): - try container.encode(numberValue) + try container.encode(Decimal(numberValue)) case let .string(stringValue): try container.encode(stringValue) case let .bool(boolValue): diff --git a/Tests/GoogleAITests/JSONValueTests.swift b/Tests/GoogleAITests/JSONValueTests.swift index bea4707..19c871e 100644 --- a/Tests/GoogleAITests/JSONValueTests.swift +++ b/Tests/GoogleAITests/JSONValueTests.swift @@ -21,6 +21,7 @@ final class JSONValueTests: XCTestCase { let numberKey = "pi" let numberValue = 3.14159 + let numberValueEncoded = "3.14159" let stringKey = "hello" let stringValue = "Hello, world!" @@ -127,7 +128,10 @@ final class JSONValueTests: XCTestCase { let jsonData = try encoder.encode(JSONValue.object(objectValue)) let json = try XCTUnwrap(String(data: jsonData, encoding: .utf8)) - XCTAssertEqual(json, "{\"\(stringKey)\":\"\(stringValue)\",\"\(numberKey)\":\(numberValue)}") + XCTAssertEqual( + json, + "{\"\(stringKey)\":\"\(stringValue)\",\"\(numberKey)\":\(numberValueEncoded)}" + ) } func testEncodeArray() throws { @@ -136,6 +140,6 @@ final class JSONValueTests: XCTestCase { let jsonData = try encoder.encode(JSONValue.array(arrayValue)) let json = try XCTUnwrap(String(data: jsonData, encoding: .utf8)) - XCTAssertEqual(json, "[null,\(numberValue)]") + XCTAssertEqual(json, "[null,\(numberValueEncoded)]") } }