[wpilib] Refactor TimedRobot tests (#5068)

This commit is contained in:
Tyler Veness
2023-02-07 23:00:46 -08:00
committed by GitHub
parent 22a170bee7
commit 37f065032f
2 changed files with 59 additions and 47 deletions

View File

@@ -21,6 +21,8 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
class TimedRobotTest {
static final double kPeriod = 0.02;
static class MockRobot extends TimedRobot {
public final AtomicInteger m_robotInitCount = new AtomicInteger(0);
public final AtomicInteger m_simulationInitCount = new AtomicInteger(0);
@@ -41,6 +43,10 @@ class TimedRobotTest {
public final AtomicInteger m_teleopExitCount = new AtomicInteger(0);
public final AtomicInteger m_testExitCount = new AtomicInteger(0);
MockRobot() {
super(kPeriod);
}
@Override
public void robotInit() {
m_robotInitCount.addAndGet(1);
@@ -168,7 +174,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -189,7 +195,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -257,7 +263,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -278,7 +284,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -346,7 +352,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -367,7 +373,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -438,7 +444,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -459,7 +465,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_robotInitCount.get());
assertEquals(1, robot.m_simulationInitCount.get());
@@ -549,7 +555,7 @@ class TimedRobotTest {
assertEquals(0, robot.m_teleopExitCount.get());
assertEquals(0, robot.m_testExitCount.get());
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(0, robot.m_autonomousInitCount.get());
@@ -567,7 +573,7 @@ class TimedRobotTest {
DriverStationSim.setTest(false);
DriverStationSim.notifyNewData();
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_autonomousInitCount.get());
@@ -585,7 +591,7 @@ class TimedRobotTest {
DriverStationSim.setTest(false);
DriverStationSim.notifyNewData();
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_autonomousInitCount.get());
@@ -603,7 +609,7 @@ class TimedRobotTest {
DriverStationSim.setTest(true);
DriverStationSim.notifyNewData();
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_autonomousInitCount.get());
@@ -621,7 +627,7 @@ class TimedRobotTest {
DriverStationSim.setTest(false);
DriverStationSim.notifyNewData();
SimHooks.stepTiming(0.02);
SimHooks.stepTiming(kPeriod);
assertEquals(2, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_autonomousInitCount.get());
@@ -653,7 +659,7 @@ class TimedRobotTest {
() -> {
callbackCount.addAndGet(1);
},
0.01);
kPeriod / 2.0);
Thread robotThread =
new Thread(
@@ -670,13 +676,13 @@ class TimedRobotTest {
assertEquals(0, robot.m_disabledPeriodicCount.get());
assertEquals(0, callbackCount.get());
SimHooks.stepTiming(0.01);
SimHooks.stepTiming(kPeriod / 2.0);
assertEquals(0, robot.m_disabledInitCount.get());
assertEquals(0, robot.m_disabledPeriodicCount.get());
assertEquals(1, callbackCount.get());
SimHooks.stepTiming(0.01);
SimHooks.stepTiming(kPeriod / 2.0);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_disabledPeriodicCount.get());
@@ -702,15 +708,17 @@ class TimedRobotTest {
() -> {
callbackCount.addAndGet(1);
},
0.01,
0.005);
kPeriod / 2.0,
kPeriod / 4.0);
// Expirations in this test (ms)
//
// Let p be period in ms.
//
// Robot | Callback
// ================
// 20 | 15
// 40 | 25
// p | 0.75p
// 2p | 1.25p
Thread robotThread =
new Thread(
@@ -727,25 +735,25 @@ class TimedRobotTest {
assertEquals(0, robot.m_disabledPeriodicCount.get());
assertEquals(0, callbackCount.get());
SimHooks.stepTiming(0.0075);
SimHooks.stepTiming(kPeriod * 3.0 / 8.0);
assertEquals(0, robot.m_disabledInitCount.get());
assertEquals(0, robot.m_disabledPeriodicCount.get());
assertEquals(0, callbackCount.get());
SimHooks.stepTiming(0.0075);
SimHooks.stepTiming(kPeriod * 3.0 / 8.0);
assertEquals(0, robot.m_disabledInitCount.get());
assertEquals(0, robot.m_disabledPeriodicCount.get());
assertEquals(1, callbackCount.get());
SimHooks.stepTiming(0.005);
SimHooks.stepTiming(kPeriod / 4.0);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_disabledPeriodicCount.get());
assertEquals(1, callbackCount.get());
SimHooks.stepTiming(0.005);
SimHooks.stepTiming(kPeriod / 4.0);
assertEquals(1, robot.m_disabledInitCount.get());
assertEquals(1, robot.m_disabledPeriodicCount.get());