in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolUnitTestResponseGenerator.kt [129:148]
fun renderMemberAssertions(writer: SwiftWriter, test: HttpMessageTestCase, members: Collection<MemberShape>, model: Model, symbolProvider: SymbolProvider, expected: String, actual: String) {
for (member in members) {
val shape = model.expectShape(member.target.toShapeId())
val expectedMemberName = "$expected.${symbolProvider.toMemberName(member)}"
val actualMemberName = "$actual.${symbolProvider.toMemberName(member)}"
if (member.isStructureShape) {
writer.write("XCTAssert(\$L === \$L)", expectedMemberName, actualMemberName)
} else if ((shape.isDoubleShape || shape.isFloatShape)) {
val stringNodes = test.params.stringMap.values.map { it.asStringNode().getOrNull() }
if (stringNodes.isNotEmpty() && stringNodes.mapNotNull { it?.value }.contains("NaN")) {
val suffix = if (symbolProvider.toSymbol(shape).isBoxed()) "?" else ""
writer.write("XCTAssertEqual(\$L$suffix.isNaN, \$L$suffix.isNaN)", expectedMemberName, actualMemberName)
} else {
writer.write("XCTAssertEqual(\$L, \$L)", expectedMemberName, actualMemberName)
}
} else {
writer.write("XCTAssertEqual(\$L, \$L)", expectedMemberName, actualMemberName)
}
}
}