// 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; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ExtensionContext.Namespace; import org.wpilib.hardware.hal.HAL; import org.wpilib.hardware.hal.RobotMode; import org.wpilib.simulation.DriverStationSim; public final class MockHardwareExtension implements BeforeAllCallback { private static ExtensionContext getRoot(ExtensionContext context) { return context.getParent().map(MockHardwareExtension::getRoot).orElse(context); } @Override public void beforeAll(ExtensionContext context) { getRoot(context) .getStore(Namespace.GLOBAL) .getOrComputeIfAbsent( "HAL Initialized", key -> { initializeHardware(); return true; }, Boolean.class); } private void initializeHardware() { HAL.initialize(500, 0); DriverStationSim.setDsAttached(true); DriverStationSim.setEnabled(true); DriverStationSim.setRobotMode(RobotMode.TEST); DriverStationSim.notifyNewData(); } }