FastLED 3.10.8
Loading...
Searching...
No Matches
validation.cpp.hpp
Go to the documentation of this file.
1// src/fl/channels/validation.cpp.hpp
2//
3// Validation test logic implementation - stateless single-test execution
4
6#include "fl/system/fastled.h"
7#include "fl/stl/unique_ptr.h"
8#include "fl/stl/sstream.h"
9#include "fl/log/log.h"
10#include "fl/stl/noexcept.h"
11
12namespace fl {
13
16 result.driver = config.driver_name;
17 result.lane_count = static_cast<int>(config.lane_sizes.size());
18 result.lane_sizes = config.lane_sizes;
19 result.pattern = config.pattern;
20
21 // ========================================================================
22 // Input Validation
23 // ========================================================================
24
25 // Validate driver name
26 if (config.driver_name.empty()) {
27 result.success = false;
28 result.error_message = "Driver name cannot be empty";
29 return result;
30 }
31
32 // Validate lane count (1-16 lanes)
33 if (config.lane_sizes.empty()) {
34 result.success = false;
35 result.error_message = "Lane count must be at least 1";
36 return result;
37 }
38
39 if (config.lane_sizes.size() > 16) {
40 result.success = false;
41 result.error_message = "Lane count cannot exceed 16";
42 return result;
43 }
44
45 // Validate individual lane sizes (must be > 0)
46 for (size_t i = 0; i < config.lane_sizes.size(); i++) {
47 if (config.lane_sizes[i] <= 0) {
48 result.success = false;
49 fl::sstream ss;
50 ss << "Lane size at index " << i << " must be positive (got " << config.lane_sizes[i] << ")";
51 result.error_message = ss.str();
52 return result;
53 }
54 }
55
56 // Validate iterations (must be > 0)
57 if (config.iterations <= 0) {
58 result.success = false;
59 result.error_message = "Iterations must be positive";
60 return result;
61 }
62
63 // Validate pattern name (must not be empty)
64 if (config.pattern.empty()) {
65 result.success = false;
66 result.error_message = "Pattern name cannot be empty";
67 return result;
68 }
69
70 // ========================================================================
71 // Test Execution (Placeholder)
72 // ========================================================================
73 // NOTE: Actual hardware validation logic (LED array creation, channel
74 // configuration, loopback testing) is implemented in the validation
75 // example sketch. This library function focuses on configuration
76 // validation and test orchestration.
77
78 result.success = true;
79 result.passed = true;
80 result.total_tests = 4 * config.iterations; // 4 patterns per iteration
81 result.passed_tests = result.total_tests;
82 result.duration_ms = 100; // Placeholder duration
83
84 return result;
85}
86
87} // namespace fl
string str() const FL_NO_EXCEPT
Definition strstream.h:43
Internal FastLED header for implementation files.
Centralized logging categories for FastLED hardware interfaces and subsystems.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
expected< T, E > result
Alias for expected (Rust-style naming)
Definition result.h:31
SingleTestResult runSingleValidationTest(const SingleTestConfig &config) FL_NO_EXCEPT
Run a single stateless validation test.
Base definition for an LED controller.
Definition crgb.hpp:179
Single test configuration - fully stateless.
Definition validation.h:194
Single test result - comprehensive pass/fail information.
Definition validation.h:210