[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

@@ -60,6 +60,7 @@ TEST_P(AllianceTest, Alliance) {
case HAL_AllianceStationID_kBlue1:
case HAL_AllianceStationID_kBlue2:
case HAL_AllianceStationID_kBlue3:
case HAL_AllianceStationID_kUnknown:
isRed = false;
break;
case HAL_AllianceStationID_kRed1:
@@ -76,7 +77,8 @@ INSTANTIATE_TEST_SUITE_P(
testing::Values<HAL_AllianceStationID>(
HAL_AllianceStationID_kRed1, HAL_AllianceStationID_kRed2,
HAL_AllianceStationID_kRed3, HAL_AllianceStationID_kBlue1,
HAL_AllianceStationID_kBlue2, HAL_AllianceStationID_kBlue3),
HAL_AllianceStationID_kBlue2, HAL_AllianceStationID_kBlue3,
HAL_AllianceStationID_kUnknown),
[](const testing::TestParamInfo<AllianceTest::ParamType>& info) {
switch (info.param) {
case HAL_AllianceStationID_kBlue1:
@@ -91,6 +93,8 @@ INSTANTIATE_TEST_SUITE_P(
return std::string{"Red2"};
case HAL_AllianceStationID_kRed3:
return std::string{"Red3"};
case HAL_AllianceStationID_kUnknown:
return std::string{"Unknown"};
}
return std::string{"Error"};
});

View File

@@ -74,6 +74,9 @@ TEST_P(AllianceTest, Alliance) {
case HAL_AllianceStationID_kRed3:
expected = 'R';
break;
case HAL_AllianceStationID_kUnknown:
expected = 'U';
break;
}
EXPECT_EQ(expected, gString.at(0));
}
@@ -83,7 +86,8 @@ INSTANTIATE_TEST_SUITE_P(
testing::Values<HAL_AllianceStationID>(
HAL_AllianceStationID_kRed1, HAL_AllianceStationID_kRed2,
HAL_AllianceStationID_kRed3, HAL_AllianceStationID_kBlue1,
HAL_AllianceStationID_kBlue2, HAL_AllianceStationID_kBlue3),
HAL_AllianceStationID_kBlue2, HAL_AllianceStationID_kBlue3,
HAL_AllianceStationID_kUnknown),
[](const testing::TestParamInfo<AllianceTest::ParamType>& info) {
switch (info.param) {
case HAL_AllianceStationID_kBlue1:
@@ -98,6 +102,8 @@ INSTANTIATE_TEST_SUITE_P(
return std::string{"Red2"};
case HAL_AllianceStationID_kRed3:
return std::string{"Red3"};
case HAL_AllianceStationID_kUnknown:
return std::string{"Unknown"};
}
return std::string{"Error"};
});