mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-26 01:51:41 +00:00
[wpilibj] AddressableLEDBuffer: Add methods for reading individual RGB values (#6333)
This avoids the allocation/GC overhead of returning a Color8 value. Also add an indexed iterator forEach to loop over the entire buffer.
This commit is contained in:
@@ -6,6 +6,7 @@ package edu.wpi.first.wpilibj;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.junit.jupiter.params.provider.Arguments.arguments;
|
||||
|
||||
import edu.wpi.first.wpilibj.util.Color;
|
||||
@@ -70,4 +71,73 @@ class AddressableLEDBufferTest {
|
||||
assertEquals(firstRedColor8Bit, buffer.getLED8Bit(2));
|
||||
assertEquals(firstBlueColor8Bit, buffer.getLED8Bit(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getRed() {
|
||||
var buffer = new AddressableLEDBuffer(1);
|
||||
buffer.setRGB(0, 127, 128, 129);
|
||||
assertEquals(127, buffer.getRed(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getGreen() {
|
||||
var buffer = new AddressableLEDBuffer(1);
|
||||
buffer.setRGB(0, 127, 128, 129);
|
||||
assertEquals(128, buffer.getGreen(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getBlue() {
|
||||
var buffer = new AddressableLEDBuffer(1);
|
||||
buffer.setRGB(0, 127, 128, 129);
|
||||
assertEquals(129, buffer.getBlue(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
void forEach() {
|
||||
var buffer = new AddressableLEDBuffer(3);
|
||||
buffer.setRGB(0, 1, 2, 3);
|
||||
buffer.setRGB(1, 4, 5, 6);
|
||||
buffer.setRGB(2, 7, 8, 9);
|
||||
|
||||
buffer.forEach(
|
||||
(index, r, g, b) -> {
|
||||
switch (index) {
|
||||
case 0:
|
||||
{
|
||||
assertAll(
|
||||
() -> assertEquals(1, r, "red at index 0"),
|
||||
() -> assertEquals(2, g, "green at index 0"),
|
||||
() -> assertEquals(3, b, "blue at index 0"));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
assertAll(
|
||||
() -> assertEquals(4, r, "red at index 1"),
|
||||
() -> assertEquals(5, g, "green at index 1"),
|
||||
() -> assertEquals(6, b, "blue at index 1"));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
assertAll(
|
||||
() -> assertEquals(7, r, "red at index 2"),
|
||||
() -> assertEquals(8, g, "green at index 2"),
|
||||
() -> assertEquals(9, b, "blue at index 2"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fail("Unexpected index " + index);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void forEachOnEmptyBuffer() {
|
||||
var buffer = new AddressableLEDBuffer(0);
|
||||
|
||||
buffer.forEach((i, r, g, b) -> fail("Iterator should not be called on an empty buffer"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user