feat: complete first MITC4 FEAST eigen implementation validation
This commit is contained in:
@@ -115,4 +115,59 @@ TEST(ReferenceTolerancePolicy,
|
||||
EXPECT_TRUE(evaluation.families.empty());
|
||||
}
|
||||
|
||||
TEST(ReferenceTolerancePolicy,
|
||||
EigenFirstImplementationDoesNotRelaxCommonPolicy) {
|
||||
const std::vector<ReferenceToleranceFamily> families{
|
||||
MakeFamily("mode-1", {"Value"}, true, {{105.0, 100.0}})};
|
||||
const auto common = ReferenceTolerancePolicy::Evaluate(families);
|
||||
const auto eigen =
|
||||
ReferenceTolerancePolicy::EvaluateMitc4EigenFirstImplementation(families);
|
||||
ASSERT_TRUE(common.valid);
|
||||
ASSERT_TRUE(eigen.valid);
|
||||
EXPECT_FALSE(common.passed);
|
||||
EXPECT_TRUE(eigen.passed);
|
||||
EXPECT_DOUBLE_EQ(eigen.families[0].relative_rms, 0.05);
|
||||
EXPECT_DOUBLE_EQ(common.families[0].relative_rms,
|
||||
eigen.families[0].relative_rms);
|
||||
}
|
||||
|
||||
TEST(ReferenceTolerancePolicy,
|
||||
EigenFirstImplementationPreservesZeroAndFiniteChecks) {
|
||||
for (const auto& row : std::vector<ReferenceToleranceRow>{
|
||||
{0.0, 0.0}, {1.0, 0.0},
|
||||
{std::numeric_limits<double>::quiet_NaN(), 1.0}}) {
|
||||
const auto result =
|
||||
ReferenceTolerancePolicy::EvaluateMitc4EigenFirstImplementation(
|
||||
{MakeFamily("mode-1", {"Value"}, true, {row})});
|
||||
if (!std::isfinite(row.fesa_value)) {
|
||||
EXPECT_FALSE(result.valid);
|
||||
EXPECT_FALSE(result.passed);
|
||||
} else {
|
||||
ASSERT_TRUE(result.valid);
|
||||
EXPECT_EQ(result.passed, row.fesa_value == 0.0);
|
||||
if (row.fesa_value != 0.0) {
|
||||
EXPECT_EQ(result.families[0].diagnostic_code,
|
||||
"zero-reference-scale-nonzero-error");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ReferenceTolerancePolicy,
|
||||
EigenFirstImplementationRejectsNonmodalFamilies) {
|
||||
for (const auto& families :
|
||||
std::vector<std::vector<ReferenceToleranceFamily>>{
|
||||
{},
|
||||
{MakeFamily("mode-1", {"U1"}, true, {{100.0, 100.0}})},
|
||||
{MakeFamily("mode-1", {"Value"}, false, {{100.0, 100.0}})},
|
||||
{MakeFamily("modes", {"Value"}, true,
|
||||
{{100.0, 100.0}, {100.0, 100.0}})}}) {
|
||||
const auto result =
|
||||
ReferenceTolerancePolicy::EvaluateMitc4EigenFirstImplementation(families);
|
||||
EXPECT_FALSE(result.valid);
|
||||
EXPECT_FALSE(result.passed);
|
||||
EXPECT_EQ(result.diagnostic_code, "invalid-eigen-tolerance-family");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user