[wpilib] DriverStation: Change alliance station to use optional (#5229)

Many teams have issues trying to read the DS too early. By switching to an optional, we cause teams to check 2 things. Either 1) they explicitly check, and their code is correct, or 2) they just read .value() and their code reboots in a loop. However, because the DS will eventually connect, this 2nd case is ok, and should theoretically be undetectable on the field.
This commit is contained in:
Thad House
2023-07-22 15:19:28 -07:00
committed by GitHub
parent ef155438bd
commit fc56f8049a
17 changed files with 179 additions and 86 deletions

View File

@@ -134,13 +134,23 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
try (CallbackStore cb = DriverStationSim.registerAllianceStationIdCallback(callback, false)) {
// Unknown
allianceStation = AllianceStationID.Unknown;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertFalse(DriverStation.getAlliance().isPresent());
assertFalse(DriverStation.getLocation().isPresent());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// B1
allianceStation = AllianceStationID.Blue1;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance());
assertEquals(1, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance().get());
assertEquals(1, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
@@ -149,8 +159,8 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance());
assertEquals(2, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance().get());
assertEquals(2, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
@@ -159,8 +169,8 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance());
assertEquals(3, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance().get());
assertEquals(3, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
@@ -169,8 +179,8 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance());
assertEquals(1, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(1, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
@@ -179,8 +189,8 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance());
assertEquals(2, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(2, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
@@ -189,8 +199,8 @@ class DriverStationSimTest {
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance());
assertEquals(3, DriverStation.getLocation());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(3, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
}