fun renderMemberAssertions()

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)
        }
    }
}