Files
allwpilib/wpilibj/src/test/java/org/wpilib/simulation/DriverStationSimTest.java
2025-11-07 23:09:21 -08:00

283 lines
10 KiB
Java

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package edu.wpi.first.wpilibj.simulation;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import edu.wpi.first.hal.AllianceStationID;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.DriverStation;
import edu.wpi.first.wpilibj.simulation.testutils.BooleanCallback;
import edu.wpi.first.wpilibj.simulation.testutils.DoubleCallback;
import edu.wpi.first.wpilibj.simulation.testutils.EnumCallback;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
class DriverStationSimTest {
@Test
void testEnabled() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
assertFalse(DriverStation.isEnabled());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerEnabledCallback(callback, false)) {
DriverStationSim.setEnabled(true);
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getEnabled());
assertTrue(DriverStation.isEnabled());
assertTrue(callback.wasTriggered());
assertTrue(callback.getSetValue());
}
}
@Test
void testAutonomous() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
assertFalse(DriverStation.isAutonomous());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerAutonomousCallback(callback, false)) {
DriverStationSim.setAutonomous(true);
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getAutonomous());
assertTrue(DriverStation.isAutonomous());
assertTrue(callback.wasTriggered());
assertTrue(callback.getSetValue());
}
}
@Test
void testTest() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
assertFalse(DriverStation.isTest());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerTestCallback(callback, false)) {
DriverStationSim.setTest(true);
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getTest());
assertTrue(DriverStation.isTest());
assertTrue(callback.wasTriggered());
assertTrue(callback.getSetValue());
}
}
@Test
void testEstop() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
assertFalse(DriverStation.isEStopped());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerEStopCallback(callback, false)) {
DriverStationSim.setEStop(true);
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getEStop());
assertTrue(DriverStation.isEStopped());
assertTrue(callback.wasTriggered());
assertTrue(callback.getSetValue());
}
}
@Test
void testFmsAttached() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
assertFalse(DriverStation.isFMSAttached());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerFmsAttachedCallback(callback, false)) {
DriverStationSim.setFmsAttached(true);
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getFmsAttached());
assertTrue(DriverStation.isFMSAttached());
assertTrue(callback.wasTriggered());
assertTrue(callback.getSetValue());
}
}
@Test
void testDsAttached() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
DriverStation.refreshData();
assertFalse(DriverStationSim.getDsAttached());
assertFalse(DriverStation.isDSAttached());
DriverStationSim.notifyNewData();
assertTrue(DriverStationSim.getDsAttached());
assertTrue(DriverStation.isDSAttached());
BooleanCallback callback = new BooleanCallback();
try (CallbackStore cb = DriverStationSim.registerDsAttachedCallback(callback, false)) {
DriverStationSim.setDsAttached(false);
DriverStation.refreshData();
assertFalse(DriverStationSim.getDsAttached());
assertFalse(DriverStation.isDSAttached());
assertTrue(callback.wasTriggered());
assertFalse(callback.getSetValue());
}
}
@Test
void testAllianceStationId() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
EnumCallback callback = new EnumCallback();
AllianceStationID allianceStation = AllianceStationID.Blue2;
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().get());
assertEquals(1, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// B2
allianceStation = AllianceStationID.Blue2;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance().get());
assertEquals(2, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// B3
allianceStation = AllianceStationID.Blue3;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Blue, DriverStation.getAlliance().get());
assertEquals(3, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// R1
allianceStation = AllianceStationID.Red1;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(1, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// R2
allianceStation = AllianceStationID.Red2;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(2, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
// R3
allianceStation = AllianceStationID.Red3;
DriverStationSim.setAllianceStationId(allianceStation);
DriverStationSim.notifyNewData();
assertEquals(allianceStation, DriverStationSim.getAllianceStationId());
assertEquals(DriverStation.Alliance.Red, DriverStation.getAlliance().get());
assertEquals(3, DriverStation.getLocation().getAsInt());
assertTrue(callback.wasTriggered());
assertEquals(allianceStation.ordinal(), callback.getSetValue());
}
}
@ParameterizedTest
@EnumSource(DriverStation.MatchType.class)
void testMatchType(DriverStation.MatchType matchType) {
HAL.initialize(500, 0);
DriverStationSim.resetData();
DriverStationSim.setMatchType(matchType);
DriverStationSim.notifyNewData();
assertEquals(matchType, DriverStation.getMatchType());
}
@Test
void testReplayNumber() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
DriverStationSim.setReplayNumber(4);
DriverStationSim.notifyNewData();
assertEquals(4, DriverStation.getReplayNumber());
}
@Test
void testMatchNumber() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
DriverStationSim.setMatchNumber(3);
DriverStationSim.notifyNewData();
assertEquals(3, DriverStation.getMatchNumber());
}
@Test
void testMatchTime() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
DoubleCallback callback = new DoubleCallback();
try (CallbackStore cb = DriverStationSim.registerMatchTimeCallback(callback, false)) {
final double testTime = 19.174;
DriverStationSim.setMatchTime(testTime);
DriverStationSim.notifyNewData();
assertEquals(testTime, DriverStationSim.getMatchTime());
assertEquals(testTime, DriverStation.getMatchTime());
assertTrue(callback.wasTriggered());
assertEquals(testTime, callback.getSetValue());
}
}
@Test
void testSetGameSpecificMessage() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
final String message = "Hello World!";
DriverStationSim.setGameSpecificMessage(message);
DriverStationSim.notifyNewData();
assertEquals(message, DriverStation.getGameSpecificMessage());
}
@Test
void testSetEventName() {
HAL.initialize(500, 0);
DriverStationSim.resetData();
final String message = "The Best Event";
DriverStationSim.setEventName(message);
DriverStationSim.notifyNewData();
assertEquals(message, DriverStation.getEventName());
}
}