Move drive integration tests into wpilibj/src/test (#1836)

Also move drive and controller tests into subfolders.
This commit is contained in:
Tyler Veness
2019-08-20 21:05:38 -07:00
committed by Peter Johnson
parent e716c36b89
commit fa06403000
8 changed files with 173 additions and 190 deletions

View File

@@ -0,0 +1,69 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2014-2019 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 "frc/controller/PIDController.h"
#include "gtest/gtest.h"
class PIDInputOutputTest : public testing::Test {
protected:
frc2::PIDController* controller;
void SetUp() override { controller = new frc2::PIDController(0, 0, 0); }
void TearDown() override { delete controller; }
};
TEST_F(PIDInputOutputTest, OutputRangeTest) {
controller->SetP(1);
controller->SetOutputRange(-50, 50);
EXPECT_DOUBLE_EQ(-50, controller->Calculate(100, 0));
EXPECT_DOUBLE_EQ(50, controller->Calculate(0, 100));
}
TEST_F(PIDInputOutputTest, InputRangeTest) {
controller->SetP(1);
controller->SetOutputRange(-1000, 1000);
controller->SetInputRange(-50, 50);
EXPECT_DOUBLE_EQ(-100, controller->Calculate(100, 0));
EXPECT_DOUBLE_EQ(50, controller->Calculate(0, 100));
}
TEST_F(PIDInputOutputTest, ContinuousInputTest) {
controller->SetP(1);
controller->EnableContinuousInput(-180, 180);
EXPECT_TRUE(controller->Calculate(-179, 179) < 0);
}
TEST_F(PIDInputOutputTest, ProportionalGainOutputTest) {
controller->SetP(4);
EXPECT_DOUBLE_EQ(-.1, controller->Calculate(.025, 0));
}
TEST_F(PIDInputOutputTest, IntegralGainOutputTest) {
controller->SetI(4);
double out = 0;
for (int i = 0; i < 5; i++) {
out = controller->Calculate(.025, 0);
}
EXPECT_DOUBLE_EQ(-.5 * controller->GetPeriod().to<double>(), out);
}
TEST_F(PIDInputOutputTest, DerivativeGainOutputTest) {
controller->SetD(4);
controller->Calculate(0, 0);
EXPECT_DOUBLE_EQ(-.01_s / controller->GetPeriod(),
controller->Calculate(.0025, 0));
}