Files
allwpilib/wpilibc/src/test/native/cpp/SlewRateLimiterTest.cpp
Peter Johnson c3b3fb8b74 [sim] Change StepTiming to wait for notifiers (#2603)
Old behavior is available via StepTimingAsync.

This makes it significantly easier to use simulation timing with notifiers.

Also update tests to use simulation framework.  This also speeds up the
timing-dependent tests by using simulation timing.  ResourceLock is used
in the Java tests to prevent parallel execution.

While we're here, tweak HAL Notifier implementation:
- Use wait_for instead of wait_until in WaitForNotifierAlarm
- Check for triggerTime = UINT64_MAX in UpdateNotifierAlarm
2020-09-27 13:27:53 -07:00

33 lines
1.0 KiB
C++

/*----------------------------------------------------------------------------*/
/* Copyright (c) 2019-2020 FIRST. 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 <thread>
#include <units/length.h>
#include <units/time.h>
#include <units/velocity.h>
#include "frc/SlewRateLimiter.h"
#include "frc/simulation/SimHooks.h"
#include "gtest/gtest.h"
TEST(SlewRateLimiterTest, SlewRateLimitTest) {
frc::SlewRateLimiter<units::meters> limiter(1_mps);
frc::sim::StepTiming(1.0_s);
EXPECT_TRUE(limiter.Calculate(2_m) < 2_m);
}
TEST(SlewRateLimiterTest, SlewRateNoLimitTest) {
frc::SlewRateLimiter<units::meters> limiter(1_mps);
frc::sim::StepTiming(1.0_s);
EXPECT_EQ(limiter.Calculate(0.5_m), 0.5_m);
}