mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
159 lines
4.5 KiB
Java
159 lines
4.5 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 org.wpilib.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 java.util.Arrays;
|
||
|
|
import java.util.List;
|
||
|
|
import org.junit.jupiter.api.AfterEach;
|
||
|
|
import org.junit.jupiter.api.BeforeEach;
|
||
|
|
import org.junit.jupiter.api.Test;
|
||
|
|
import org.junit.jupiter.api.TestInfo;
|
||
|
|
import org.wpilib.driverstation.Alert;
|
||
|
|
import org.wpilib.driverstation.Alert.Level;
|
||
|
|
import org.wpilib.hardware.hal.HAL;
|
||
|
|
|
||
|
|
class AlertSimTest {
|
||
|
|
private String m_groupName;
|
||
|
|
|
||
|
|
@BeforeEach
|
||
|
|
void setup(TestInfo info) {
|
||
|
|
HAL.initialize(500, 0);
|
||
|
|
m_groupName = "AlertTest_" + info.getDisplayName();
|
||
|
|
}
|
||
|
|
|
||
|
|
@AfterEach
|
||
|
|
void cleanup() {
|
||
|
|
AlertSim.resetData();
|
||
|
|
}
|
||
|
|
|
||
|
|
private String[] getActiveAlerts(Level type) {
|
||
|
|
return Arrays.stream(AlertSim.getAll())
|
||
|
|
.filter(a -> a.isActive() && a.level == type)
|
||
|
|
.map(a -> a.text)
|
||
|
|
.toArray(String[]::new);
|
||
|
|
}
|
||
|
|
|
||
|
|
private boolean isAlertActive(String text, Alert.Level type) {
|
||
|
|
return Arrays.stream(AlertSim.getAll())
|
||
|
|
.filter(a -> a.isActive() && a.level == type)
|
||
|
|
.anyMatch(a -> a.text.equals(text));
|
||
|
|
}
|
||
|
|
|
||
|
|
private void assertState(Alert.Level type, List<String> state) {
|
||
|
|
assertEquals(state, Arrays.asList(getActiveAlerts(type)));
|
||
|
|
}
|
||
|
|
|
||
|
|
private Alert makeAlert(String text, Alert.Level type) {
|
||
|
|
return new Alert(m_groupName, text, type);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void testInitialization() {
|
||
|
|
assertEquals(0, AlertSim.getCount());
|
||
|
|
assertEquals(0, AlertSim.getAll().length);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void testReset() {
|
||
|
|
try (var alert = makeAlert("alert", Level.HIGH)) {
|
||
|
|
alert.set(true);
|
||
|
|
assertTrue(isAlertActive("alert", Level.HIGH));
|
||
|
|
}
|
||
|
|
AlertSim.resetData();
|
||
|
|
assertFalse(isAlertActive("alert", Level.HIGH));
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void setUnsetSingle() {
|
||
|
|
try (var one = makeAlert("one", Level.LOW)) {
|
||
|
|
assertFalse(isAlertActive("one", Level.LOW));
|
||
|
|
one.set(true);
|
||
|
|
assertTrue(isAlertActive("one", Level.LOW));
|
||
|
|
one.set(false);
|
||
|
|
assertFalse(isAlertActive("one", Level.LOW));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void setUnsetMultiple() {
|
||
|
|
try (var one = makeAlert("one", Level.HIGH);
|
||
|
|
var two = makeAlert("two", Level.LOW)) {
|
||
|
|
assertFalse(isAlertActive("one", Level.HIGH));
|
||
|
|
assertFalse(isAlertActive("two", Level.LOW));
|
||
|
|
one.set(true);
|
||
|
|
assertTrue(isAlertActive("one", Level.HIGH));
|
||
|
|
assertFalse(isAlertActive("two", Level.LOW));
|
||
|
|
one.set(true);
|
||
|
|
two.set(true);
|
||
|
|
assertTrue(isAlertActive("one", Level.HIGH));
|
||
|
|
assertTrue(isAlertActive("two", Level.LOW));
|
||
|
|
one.set(false);
|
||
|
|
assertFalse(isAlertActive("one", Level.HIGH));
|
||
|
|
assertTrue(isAlertActive("two", Level.LOW));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void setIsIdempotent() {
|
||
|
|
try (var a = makeAlert("A", Level.LOW);
|
||
|
|
var b = makeAlert("B", Level.LOW);
|
||
|
|
var c = makeAlert("C", Level.LOW)) {
|
||
|
|
a.set(true);
|
||
|
|
b.set(true);
|
||
|
|
c.set(true);
|
||
|
|
|
||
|
|
var startState = List.of(getActiveAlerts(Level.LOW));
|
||
|
|
|
||
|
|
b.set(true);
|
||
|
|
assertState(Level.LOW, startState);
|
||
|
|
|
||
|
|
a.set(true);
|
||
|
|
assertState(Level.LOW, startState);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void closeUnsetsAlert() {
|
||
|
|
try (var alert = makeAlert("alert", Level.MEDIUM)) {
|
||
|
|
alert.set(true);
|
||
|
|
assertTrue(isAlertActive("alert", Level.MEDIUM));
|
||
|
|
}
|
||
|
|
assertFalse(isAlertActive("alert", Level.MEDIUM));
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void setTextWhileUnset() {
|
||
|
|
try (var alert = makeAlert("BEFORE", Level.LOW)) {
|
||
|
|
assertEquals("BEFORE", alert.getText());
|
||
|
|
alert.set(true);
|
||
|
|
assertTrue(isAlertActive("BEFORE", Level.LOW));
|
||
|
|
alert.set(false);
|
||
|
|
assertFalse(isAlertActive("BEFORE", Level.LOW));
|
||
|
|
alert.setText("AFTER");
|
||
|
|
assertEquals("AFTER", alert.getText());
|
||
|
|
alert.set(true);
|
||
|
|
assertFalse(isAlertActive("BEFORE", Level.LOW));
|
||
|
|
assertTrue(isAlertActive("AFTER", Level.LOW));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void setTextWhileSet() {
|
||
|
|
try (var alert = makeAlert("BEFORE", Level.LOW)) {
|
||
|
|
assertEquals("BEFORE", alert.getText());
|
||
|
|
alert.set(true);
|
||
|
|
assertTrue(isAlertActive("BEFORE", Level.LOW));
|
||
|
|
alert.setText("AFTER");
|
||
|
|
assertEquals("AFTER", alert.getText());
|
||
|
|
assertFalse(isAlertActive("BEFORE", Level.LOW));
|
||
|
|
assertTrue(isAlertActive("AFTER", Level.LOW));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|