Adds a test to make sure WaitForData is properly waiting (#258)

This commit is contained in:
Thad House
2016-10-06 11:18:47 -07:00
committed by Peter Johnson
parent 7070162b98
commit a59e00e901
3 changed files with 81 additions and 4 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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 {
}