mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +00:00
283 lines
10 KiB
Java
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());
|
|
}
|
|
}
|