mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
[wpilib] Add method to enable/disable LiveWindow in test mode (#4678)
This commit is contained in:
@@ -5,14 +5,20 @@
|
||||
package edu.wpi.first.wpilibj;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
|
||||
import edu.wpi.first.wpilibj.simulation.DriverStationSim;
|
||||
import edu.wpi.first.wpilibj.simulation.SimHooks;
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.parallel.ResourceLock;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
class TimedRobotTest {
|
||||
static class MockRobot extends TimedRobot {
|
||||
@@ -119,6 +125,7 @@ class TimedRobotTest {
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
SimHooks.pauseTiming();
|
||||
DriverStationSim.resetData();
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
@@ -391,10 +398,12 @@ class TimedRobotTest {
|
||||
robot.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ValueSource(booleans = {true, false})
|
||||
@ParameterizedTest
|
||||
@ResourceLock("timing")
|
||||
void testModeTest() {
|
||||
void testModeTest(boolean isLW) {
|
||||
MockRobot robot = new MockRobot();
|
||||
robot.enableLiveWindowInTest(isLW);
|
||||
|
||||
Thread robotThread =
|
||||
new Thread(
|
||||
@@ -415,6 +424,7 @@ class TimedRobotTest {
|
||||
assertEquals(0, robot.m_autonomousInitCount.get());
|
||||
assertEquals(0, robot.m_teleopInitCount.get());
|
||||
assertEquals(0, robot.m_testInitCount.get());
|
||||
assertFalse(LiveWindow.isEnabled());
|
||||
|
||||
assertEquals(0, robot.m_robotPeriodicCount.get());
|
||||
assertEquals(0, robot.m_simulationPeriodicCount.get());
|
||||
@@ -457,6 +467,9 @@ class TimedRobotTest {
|
||||
assertEquals(0, robot.m_autonomousInitCount.get());
|
||||
assertEquals(0, robot.m_teleopInitCount.get());
|
||||
assertEquals(1, robot.m_testInitCount.get());
|
||||
assertEquals(isLW, LiveWindow.isEnabled());
|
||||
|
||||
assertThrows(ConcurrentModificationException.class, () -> robot.enableLiveWindowInTest(isLW));
|
||||
|
||||
assertEquals(2, robot.m_robotPeriodicCount.get());
|
||||
assertEquals(2, robot.m_simulationPeriodicCount.get());
|
||||
@@ -470,6 +483,33 @@ class TimedRobotTest {
|
||||
assertEquals(0, robot.m_teleopExitCount.get());
|
||||
assertEquals(0, robot.m_testExitCount.get());
|
||||
|
||||
DriverStationSim.setEnabled(false);
|
||||
DriverStationSim.setAutonomous(false);
|
||||
DriverStationSim.setTest(false);
|
||||
DriverStationSim.notifyNewData();
|
||||
|
||||
SimHooks.stepTiming(0.02);
|
||||
|
||||
assertEquals(1, robot.m_robotInitCount.get());
|
||||
assertEquals(1, robot.m_simulationInitCount.get());
|
||||
assertEquals(1, robot.m_disabledInitCount.get());
|
||||
assertEquals(0, robot.m_autonomousInitCount.get());
|
||||
assertEquals(0, robot.m_teleopInitCount.get());
|
||||
assertEquals(1, robot.m_testInitCount.get());
|
||||
assertFalse(LiveWindow.isEnabled());
|
||||
|
||||
assertEquals(3, robot.m_robotPeriodicCount.get());
|
||||
assertEquals(3, robot.m_simulationPeriodicCount.get());
|
||||
assertEquals(1, robot.m_disabledPeriodicCount.get());
|
||||
assertEquals(0, robot.m_autonomousPeriodicCount.get());
|
||||
assertEquals(0, robot.m_teleopPeriodicCount.get());
|
||||
assertEquals(2, robot.m_testPeriodicCount.get());
|
||||
|
||||
assertEquals(0, robot.m_disabledExitCount.get());
|
||||
assertEquals(0, robot.m_autonomousExitCount.get());
|
||||
assertEquals(0, robot.m_teleopExitCount.get());
|
||||
assertEquals(1, robot.m_testExitCount.get());
|
||||
|
||||
robot.endCompetition();
|
||||
try {
|
||||
robotThread.interrupt();
|
||||
|
||||
Reference in New Issue
Block a user