Skip to content

Commit 9041ba1

Browse files
committed
test(ui): Add test_validation_result.cpp
Split from monolithic test_parameter_validation.cpp into focused ValidationResult tests covering: - Single and multiple error formatting - Empty error list (valid result) behavior - Summary generation with validated parameters - Parameter count reporting in summaries Tests the ValidationResult data structure and its user-facing output methods (format_errors, format_summary). Validates that error messages and validation summaries are clear and informative for end users. Completes UI parameter validation test refactoring into three focused test files for better maintainability.
1 parent b7f2b09 commit 9041ba1

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// SPDX-FileCopyrightText: 2025 VTT Technical Research Centre of Finland Ltd
2+
// SPDX-License-Identifier: AGPL-3.0-or-later
3+
4+
#include "openpfc/ui/parameter_validator.hpp"
5+
#include <catch2/catch_all.hpp>
6+
7+
using namespace pfc::ui;
8+
9+
TEST_CASE("ValidationResult error formatting", "[validation_result][unit]") {
10+
ValidationResult result;
11+
12+
SECTION("Single error") {
13+
result.errors.push_back("temperature: Value below minimum (0)");
14+
result.valid = false;
15+
REQUIRE_FALSE(result.is_valid());
16+
17+
std::string errors = result.format_errors();
18+
REQUIRE(errors.find("temperature") != std::string::npos);
19+
REQUIRE(errors.find("below minimum") != std::string::npos);
20+
}
21+
22+
SECTION("Multiple errors") {
23+
result.errors.push_back("temperature: Value below minimum");
24+
result.errors.push_back("mobility: Value exceeds maximum");
25+
result.valid = false;
26+
REQUIRE_FALSE(result.is_valid());
27+
28+
std::string errors = result.format_errors();
29+
REQUIRE(errors.find("temperature") != std::string::npos);
30+
REQUIRE(errors.find("mobility") != std::string::npos);
31+
}
32+
33+
SECTION("No errors") {
34+
REQUIRE(result.is_valid());
35+
std::string errors = result.format_errors();
36+
REQUIRE(errors.find("No errors") != std::string::npos);
37+
}
38+
}
39+
40+
TEST_CASE("ValidationResult summary", "[validation_result][unit]") {
41+
ValidationResult result;
42+
43+
SECTION("Valid result summary") {
44+
std::string summary = result.format_summary();
45+
REQUIRE(summary.find("Validation Summary") != std::string::npos);
46+
}
47+
48+
SECTION("With validated parameters") {
49+
result.validated_params["temperature"] = "3300.0";
50+
result.validated_params["mobility"] = "50.0";
51+
52+
std::string summary = result.format_summary();
53+
REQUIRE(summary.find("2 parameter") != std::string::npos);
54+
REQUIRE(summary.find("temperature") != std::string::npos);
55+
REQUIRE(summary.find("mobility") != std::string::npos);
56+
}
57+
}

0 commit comments

Comments
 (0)