diff --git a/wpilibcIntegrationTests/src/DriverStationTest.cpp b/wpilibcIntegrationTests/src/DriverStationTest.cpp new file mode 100644 index 0000000000..98c272532a --- /dev/null +++ b/wpilibcIntegrationTests/src/DriverStationTest.cpp @@ -0,0 +1,33 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) FIRST 2014-2016. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "DriverStation.h" // NOLINT(build/include_order) + +#include "TestBench.h" +#include "Utility.h" +#include "gtest/gtest.h" + +constexpr double TIMER_TOLERANCE = 0.2; +constexpr int64_t TIMER_RUNTIME = 1000000; // 1 second + +class DriverStationTest : public testing::Test {}; + +/** + * Test if the WaitForData function works + */ +TEST_F(DriverStationTest, WaitForData) { + uint64_t initialTime = GetFPGATime(); + + for (int i = 0; i < 50; i++) { + DriverStation::GetInstance().WaitForData(); + } + + uint64_t finalTime = GetFPGATime(); + + EXPECT_NEAR(TIMER_RUNTIME, finalTime - initialTime, + TIMER_TOLERANCE * TIMER_RUNTIME); +} diff --git a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/DriverStationTest.java b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/DriverStationTest.java new file mode 100644 index 0000000000..2f243fecb8 --- /dev/null +++ b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/DriverStationTest.java @@ -0,0 +1,44 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) FIRST 2008-2016. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package edu.wpi.first.wpilibj; + +import org.junit.Test; + +import java.util.logging.Logger; + +import edu.wpi.first.wpilibj.test.AbstractComsSetup; + +import static org.junit.Assert.assertEquals; + + +public class DriverStationTest extends AbstractComsSetup { + private static final Logger logger = Logger.getLogger(TimerTest.class.getName()); + private static final double TIMER_TOLERANCE = 0.2; + private static final long TIMER_RUNTIME = 1000000; // 1 second + + @Override + protected Logger getClassLogger() { + return logger; + } + + @Test + public void waitForDataTest() { + long startTime = Utility.getFPGATime(); + + // Wait for data 50 times + for (int i = 0; i < 50; i++) { + DriverStation.getInstance().waitForData(); + } + long endTime = Utility.getFPGATime(); + long difference = endTime - startTime; + + assertEquals("DriverStation waitForData did not wait long enough", TIMER_RUNTIME, difference, + TIMER_TOLERANCE * TIMER_RUNTIME); + } + +} diff --git a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/WpiLibJTestSuite.java b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/WpiLibJTestSuite.java index 6567e3246b..1b0bda9891 100644 --- a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/WpiLibJTestSuite.java +++ b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/WpiLibJTestSuite.java @@ -21,10 +21,10 @@ import edu.wpi.first.wpilibj.test.AbstractTestSuite; @SuiteClasses({AnalogCrossConnectTest.class, AnalogPotentiometerTest.class, BuiltInAccelerometerTest.class, CANTalonTest.class, CircularBufferTest.class, ConstantsPortsTest.class, CounterTest.class, - DigitalGlitchFilterTest.class, DIOCrossConnectTest.class, EncoderTest.class, - FilterNoiseTest.class, FilterOutputTest.class, GyroTest.class, MotorEncoderTest.class, - MotorInvertingTest.class, PCMTest.class, PDPTest.class, PIDTest.class, - PIDToleranceTest.class, PreferencesTest.class, RelayCrossConnectTest.class, + DigitalGlitchFilterTest.class, DIOCrossConnectTest.class, DriverStationTest.class, + EncoderTest.class, FilterNoiseTest.class, FilterOutputTest.class, GyroTest.class, + MotorEncoderTest.class, MotorInvertingTest.class, PCMTest.class, PDPTest.class, + PIDTest.class, PIDToleranceTest.class, PreferencesTest.class, RelayCrossConnectTest.class, SampleTest.class, TimerTest.class}) public class WpiLibJTestSuite extends AbstractTestSuite { }