| 62 | } // namespace |
| 63 | |
| 64 | FL_TEST_FILE(FL_FILEPATH) { |
| 65 | |
| 66 | FL_TEST_CASE("CHSV palettes upscale consistently") { |
| 67 | CHSVPalette16 hsv16( |
| 68 | make_hsv(0), make_hsv(1), make_hsv(2), make_hsv(3), |
| 69 | make_hsv(4), make_hsv(5), make_hsv(6), make_hsv(7), |
| 70 | make_hsv(8), make_hsv(9), make_hsv(10), make_hsv(11), |
| 71 | make_hsv(12), make_hsv(13), make_hsv(14), make_hsv(15)); |
| 72 | |
| 73 | FL_SUBCASE("32-entry constructor and assignment repeat 16-entry anchors") { |
| 74 | CHSVPalette32 from_ctor(hsv16); |
| 75 | CHSVPalette32 from_assign; |
| 76 | from_assign = hsv16; |
| 77 | |
| 78 | FL_CHECK(from_ctor == from_assign); |
| 79 | for (int i = 0; i < 16; ++i) { |
| 80 | check_hsv_eq(from_ctor[2 * i + 0], hsv16[i]); |
| 81 | check_hsv_eq(from_ctor[2 * i + 1], hsv16[i]); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | FL_SUBCASE("256-entry constructor and assignment from 32-entry preserve ColorFromPalette semantics") { |
| 86 | CHSVPalette32 hsv32(hsv16); |
| 87 | CHSVPalette256 from_ctor(hsv32); |
| 88 | CHSVPalette256 from_assign; |
| 89 | from_assign = hsv32; |
| 90 | |
| 91 | FL_CHECK(from_ctor == from_assign); |
| 92 | for (int i = 0; i < 256; ++i) { |
| 93 | check_hsv_eq(from_ctor[i], ColorFromPalette(hsv32, static_cast<fl::u8>(i))); |
| 94 | } |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | FL_TEST_CASE("palette progmem constructors stay aligned with runtime conversions") { |
| 99 | FL_SUBCASE("CHSV 16-entry progmem can build 32-entry and 256-entry palettes") { |
| 100 | CHSVPalette16 from_prog16(kProgmemHsv16); |
| 101 | CHSVPalette32 hsv32(kProgmemHsv16); |
| 102 | CHSVPalette256 hsv256(kProgmemHsv16); |
| 103 | |
| 104 | for (int i = 0; i < 16; ++i) { |
| 105 | check_hsv_eq(hsv32[2 * i + 0], from_prog16[i]); |
| 106 | check_hsv_eq(hsv32[2 * i + 1], from_prog16[i]); |
| 107 | check_hsv_eq(hsv256[16 * i], from_prog16[i]); |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | FL_SUBCASE("CHSV 32-entry progmem can build a 256-entry palette") { |
| 112 | CHSVPalette32 from_prog32(kProgmemHsv32); |
| 113 | CHSVPalette256 hsv256(kProgmemHsv32); |
| 114 | |
| 115 | for (int i = 0; i < 256; ++i) { |
| 116 | check_hsv_eq(hsv256[i], ColorFromPalette(from_prog32, static_cast<fl::u8>(i))); |
| 117 | } |
| 118 | } |
| 119 | |
| 120 | FL_SUBCASE("CRGB 32-entry progmem can build a 256-entry palette") { |
| 121 | CRGBPalette32 from_prog32(kProgmemRgb32); |
nothing calls this directly
no test coverage detected