#include #include #include #include #include namespace { TEST(Diagnostic, PreservesSourceLocation) { const fesa::Diagnostic diagnostic{ fesa::DiagnosticStage::syntax, fesa::Severity::error, "ABAQUS_INVALID_NODE", "Node data is incomplete.", fesa::SourceLocation{ std::filesystem::path{"models/beam.inp"}, 42, 9}}; ASSERT_TRUE(diagnostic.source.has_value()); EXPECT_EQ( diagnostic.source->file, std::filesystem::path{"models/beam.inp"}); EXPECT_EQ(diagnostic.source->line, 42U); EXPECT_EQ(diagnostic.source->column, 9U); } TEST(Diagnostic, AllowsDiagnosticsWithoutSourceLocation) { const fesa::Diagnostic diagnostic{ fesa::DiagnosticStage::solver, fesa::Severity::warning, "SOLVER_RESIDUAL", "Residual is above the reporting threshold.", std::nullopt}; EXPECT_FALSE(diagnostic.source.has_value()); } } // namespace