mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpilib] Allow LED pattern gradients to be discontinuous (#7174)
This commit is contained in:
@@ -48,7 +48,8 @@ TEST(LEDPatternTest, SolidColor) {
|
||||
|
||||
TEST(LEDPatternTest, EmptyGradientSetsToBlack) {
|
||||
std::array<Color, 0> colors;
|
||||
LEDPattern pattern = LEDPattern::Gradient(colors);
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kContinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 5> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
for (int i = 0; i < 5; i++) {
|
||||
@@ -58,7 +59,8 @@ TEST(LEDPatternTest, EmptyGradientSetsToBlack) {
|
||||
|
||||
TEST(LEDPatternTest, SingleColorGradientSetsSolid) {
|
||||
std::array<Color, 1> colors{Color::kYellow};
|
||||
LEDPattern pattern = LEDPattern::Gradient(colors);
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kContinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 5> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
for (int i = 0; i < 5; i++) {
|
||||
@@ -68,7 +70,8 @@ TEST(LEDPatternTest, SingleColorGradientSetsSolid) {
|
||||
|
||||
TEST(LEDPatternTest, Gradient2Colors) {
|
||||
std::array<Color, 2> colors{Color::kYellow, Color::kPurple};
|
||||
LEDPattern pattern = LEDPattern::Gradient(colors);
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kContinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 99> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
AssertIndexColor(buffer, 0, Color::kYellow);
|
||||
@@ -80,9 +83,21 @@ TEST(LEDPatternTest, Gradient2Colors) {
|
||||
AssertIndexColor(buffer, 98, Color::kYellow);
|
||||
}
|
||||
|
||||
TEST(LEDPatternTest, DiscontinuousGradient2Colors) {
|
||||
std::array<Color, 2> colors{Color::kYellow, Color::kPurple};
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kDiscontinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 99> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
AssertIndexColor(buffer, 0, Color::kYellow);
|
||||
AssertIndexColor(buffer, 49, LerpColors(Color::kYellow, Color::kPurple, 0.5));
|
||||
AssertIndexColor(buffer, 98, Color::kPurple);
|
||||
}
|
||||
|
||||
TEST(LEDPatternTest, Gradient3Colors) {
|
||||
std::array<Color, 3> colors{Color::kYellow, Color::kPurple, Color::kWhite};
|
||||
LEDPattern pattern = LEDPattern::Gradient(colors);
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kContinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 99> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
|
||||
@@ -99,6 +114,20 @@ TEST(LEDPatternTest, Gradient3Colors) {
|
||||
LerpColors(Color::kWhite, Color::kYellow, 32 / 33.0));
|
||||
}
|
||||
|
||||
TEST(LEDPatternTest, DiscontinuousGradient3Colors) {
|
||||
std::array<Color, 3> colors{Color::kYellow, Color::kPurple, Color::kWhite};
|
||||
LEDPattern pattern =
|
||||
LEDPattern::Gradient(LEDPattern::GradientType::kDiscontinuous, colors);
|
||||
std::array<AddressableLED::LEDData, 101> buffer;
|
||||
pattern.ApplyTo(buffer);
|
||||
|
||||
AssertIndexColor(buffer, 0, Color::kYellow);
|
||||
AssertIndexColor(buffer, 25, LerpColors(Color::kYellow, Color::kPurple, 0.5));
|
||||
AssertIndexColor(buffer, 50, Color::kPurple);
|
||||
AssertIndexColor(buffer, 75, LerpColors(Color::kPurple, Color::kWhite, 0.5));
|
||||
AssertIndexColor(buffer, 100, Color::kWhite);
|
||||
}
|
||||
|
||||
TEST(LEDPatternTest, EmptyStepsSetsToBlack) {
|
||||
std::array<std::pair<double, Color>, 0> steps;
|
||||
LEDPattern pattern = LEDPattern::Steps(steps);
|
||||
|
||||
Reference in New Issue
Block a user