Files
orca/native/computer-use-macos/Tests/OrcaComputerUseMacOSTests/AttributeValueCoercionTests.swift

65 lines
2.1 KiB
Swift

import CoreFoundation
import Foundation
import XCTest
@testable import OrcaComputerUseMacOSCore
final class AttributeValueCoercionTests: XCTestCase {
func testIntegerDecimalConversionIsExactAboveDoublePrecision() {
let coercion = AttributeValueCoercion(
existingValue: NSNumber(value: Int64(1)),
requested: "9007199254740993.0"
)
XCTAssertEqual(coercion.writeValue, .integer(9_007_199_254_740_993))
XCTAssertEqual(
coercion.compare(readback: NSNumber(value: Int64(9_007_199_254_740_992))),
.mismatch(actualPreview: "9007199254740992")
)
}
func testIntegerScientificNotationIsParsedExactly() {
let cases: [(String, Int64)] = [
("1e3", 1_000),
("9.007199254740993e15", 9_007_199_254_740_993),
("10.0e-1", 1),
("+0.000E999999999999999999999", 0),
("-.0e-999999999999999999999", 0),
]
for (requested, expected) in cases {
XCTAssertEqual(
AttributeValueCoercion(existingValue: NSNumber(value: 1), requested: requested).writeValue,
.integer(expected)
)
}
}
func testIntegerParsingPreservesInt64Boundaries() {
XCTAssertEqual(
AttributeValueCoercion(
existingValue: NSNumber(value: 1),
requested: "9223372036854775807.0"
).writeValue,
.integer(.max)
)
XCTAssertEqual(
AttributeValueCoercion(
existingValue: NSNumber(value: 1),
requested: "-9.223372036854775808e18"
).writeValue,
.integer(.min)
)
}
func testNonIntegralAndOutOfRangeIntegerFormsUseStringFallback() {
for requested in ["1e-1", "9223372036854775808", "-9223372036854775809", "1e999999999999999999999"] {
XCTAssertEqual(
AttributeValueCoercion(existingValue: NSNumber(value: 1), requested: requested).writeValue,
.string(requested)
)
}
}
}