MCPcopy Create free account
hub / github.com/FastLED/FastLED / FL_TEST_FILE

Function FL_TEST_FILE

tests/fl/hsv2rgb_accuracy.cpp:16–260  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14#include "fl/stl/strstream.h"
15
16FL_TEST_FILE(FL_FILEPATH) {
17using namespace fl;
18struct AccuracyStats {
19 float average;
20 float median;
21 float max;
22 float min;
23 vector<float> deviations;
24
25 void calculate() {
26 if (deviations.empty()) {
27 average = median = max = min = 0.0f;
28 return;
29 }
30
31 // Sort for median calculation
32 sort(deviations.begin(), deviations.end());
33
34 // Calculate average
35 float sum = 0.0f;
36 for (size_t i = 0; i < deviations.size(); ++i) {
37 sum += deviations[i];
38 }
39 average = sum / deviations.size();
40
41 // Calculate median
42 size_t mid = deviations.size() / 2;
43 if (deviations.size() % 2 == 0) {
44 median = (deviations[mid - 1] + deviations[mid]) / 2.0f;
45 } else {
46 median = deviations[mid];
47 }
48
49 // Min and max
50 min = deviations.front();
51 max = deviations.back();
52 }
53
54 void print(const char* function_name) const {
55 FL_WARN(function_name << " Accuracy Statistics:");
56 FL_WARN(" Average: " << average);
57 FL_WARN(" Median: " << median);
58 FL_WARN(" Min: " << min);
59 FL_WARN(" Max: " << max);
60 FL_WARN(" Samples: " << deviations.size());
61 FL_WARN("");
62 }
63};
64
65// Calculate euclidean distance between two RGB colors
66static float calculateRGBDeviation(const CRGB& original, const CRGB& converted) {
67 float dr = float(original.r) - float(converted.r);
68 float dg = float(original.g) - float(converted.g);
69 float db = float(original.b) - float(converted.b);
70 return fl::sqrtf(dr*dr + dg*dg + db*db);
71}
72
73// Test a specific conversion function with RGB -> HSV -> RGB round trip

Callers

nothing calls this directly

Calls 9

testConversionFunctionFunction · 0.85
hsv2rgb_rainbowFunction · 0.85
hsv2rgb_spectrumFunction · 0.85
hsv2rgb_fullspectrumFunction · 0.85
sortFunction · 0.85
rgb2hsv_approximateFunction · 0.85
printMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected