From 56833abe68d99fcfddcb9a7a1e743f51d2e14fe5 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Wed, 12 Aug 2026 22:29:12 +0900 Subject: [PATCH] fix: normalize MITC4 reference identities --- tests/reference/mitc4_reference_cases_test.cpp | 8 +++++++- tests/reference/mitc4_reference_comparison.cpp | 18 +++++++++++++++--- .../mitc4_reference_comparison_test.cpp | 3 +++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/tests/reference/mitc4_reference_cases_test.cpp b/tests/reference/mitc4_reference_cases_test.cpp index fd38c9f..4543e20 100644 --- a/tests/reference/mitc4_reference_cases_test.cpp +++ b/tests/reference/mitc4_reference_cases_test.cpp @@ -87,7 +87,13 @@ CaseEvidence runCase( auto comparisonResult = fesa::test::Mitc4ReferenceComparison::compare( {caseId, sourceElementType, input, csv, results}); if (!comparisonResult.hasValue()) { - ADD_FAILURE() << "MITC4 comparison precheck failed for " << caseId; + std::string diagnostics; + for (const auto& diagnostic : + comparisonResult.status().diagnostics()) { + diagnostics += "\n" + diagnostic.code + ": " + diagnostic.message; + } + ADD_FAILURE() << "MITC4 comparison precheck failed for " << caseId + << diagnostics; return {{}, comparison}; } EXPECT_TRUE( diff --git a/tests/reference/mitc4_reference_comparison.cpp b/tests/reference/mitc4_reference_comparison.cpp index 796a28a..a0845b9 100644 --- a/tests/reference/mitc4_reference_comparison.cpp +++ b/tests/reference/mitc4_reference_comparison.cpp @@ -120,13 +120,25 @@ double parseFiniteDouble(const std::string& field) { return value; } +std::string uppercaseAscii(std::string value) { + std::transform( + value.begin(), value.end(), value.begin(), [](const char character) { + return character >= 'a' && character <= 'z' + ? static_cast(character - 'a' + 'A') + : character; + }); + return value; +} + struct IdentityKey { std::string instanceName; std::int64_t sourceNodeLabel; - bool operator<(const IdentityKey& other) const noexcept { - if (instanceName != other.instanceName) { - return instanceName < other.instanceName; + bool operator<(const IdentityKey& other) const { + const std::string normalizedInstance = uppercaseAscii(instanceName); + const std::string normalizedOther = uppercaseAscii(other.instanceName); + if (normalizedInstance != normalizedOther) { + return normalizedInstance < normalizedOther; } return sourceNodeLabel < other.sourceNodeLabel; } diff --git a/tests/reference/mitc4_reference_comparison_test.cpp b/tests/reference/mitc4_reference_comparison_test.cpp index 038c759..f6ae70e 100644 --- a/tests/reference/mitc4_reference_comparison_test.cpp +++ b/tests/reference/mitc4_reference_comparison_test.cpp @@ -540,6 +540,9 @@ TEST(Mitc4ReferenceComparison, MapsTrimmedHeaderAndSixComponentsBySourceIdentity ContractFixture fixture{"mapping"}; auto csvRows = defaultRows(); std::reverse(csvRows.begin(), csvRows.end()); + for (auto& row : csvRows) { + row.instanceName = "part-1-1"; + } writeCsv( fixture.csv(), csvRows, " Part Instance Name , Node Label , U-U1 , U-U2 , U-U3 , "