mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
93 lines
2.0 KiB
C++
93 lines
2.0 KiB
C++
// 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.
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <hal/HAL.h>
|
|
|
|
#include "frc/AnalogPotentiometer.h"
|
|
#include "frc/simulation/AnalogInputSim.h"
|
|
#include "frc/simulation/RoboRioSim.h"
|
|
|
|
namespace frc {
|
|
using namespace frc::sim;
|
|
TEST(AnalogPotentiometerTest, InitializeWithAnalogInput) {
|
|
HAL_Initialize(500, 0);
|
|
|
|
AnalogInput ai{0};
|
|
AnalogPotentiometer pot{&ai};
|
|
AnalogInputSim sim{ai};
|
|
|
|
RoboRioSim::ResetData();
|
|
sim.SetVoltage(4.0);
|
|
EXPECT_EQ(0.8, pot.Get());
|
|
}
|
|
|
|
TEST(AnalogPotentiometerTest, InitializeWithAnalogInputAndScale) {
|
|
HAL_Initialize(500, 0);
|
|
|
|
AnalogInput ai{0};
|
|
AnalogPotentiometer pot{&ai, 270.0};
|
|
RoboRioSim::ResetData();
|
|
AnalogInputSim sim{ai};
|
|
|
|
sim.SetVoltage(5.0);
|
|
EXPECT_EQ(270.0, pot.Get());
|
|
|
|
sim.SetVoltage(2.5);
|
|
EXPECT_EQ(135, pot.Get());
|
|
|
|
sim.SetVoltage(0.0);
|
|
EXPECT_EQ(0.0, pot.Get());
|
|
}
|
|
|
|
TEST(AnalogPotentiometerTest, InitializeWithChannel) {
|
|
HAL_Initialize(500, 0);
|
|
|
|
AnalogPotentiometer pot{1};
|
|
AnalogInputSim sim{1};
|
|
|
|
sim.SetVoltage(5.0);
|
|
EXPECT_EQ(1.0, pot.Get());
|
|
}
|
|
|
|
TEST(AnalogPotentiometerTest, InitializeWithChannelAndScale) {
|
|
HAL_Initialize(500, 0);
|
|
|
|
AnalogPotentiometer pot{1, 180.0};
|
|
RoboRioSim::ResetData();
|
|
AnalogInputSim sim{1};
|
|
|
|
sim.SetVoltage(5.0);
|
|
EXPECT_EQ(180.0, pot.Get());
|
|
|
|
sim.SetVoltage(0.0);
|
|
EXPECT_EQ(0.0, pot.Get());
|
|
}
|
|
|
|
TEST(AnalogPotentiometerTest, WithModifiedBatteryVoltage) {
|
|
AnalogPotentiometer pot{1, 180.0, 90.0};
|
|
RoboRioSim::ResetData();
|
|
AnalogInputSim sim{1};
|
|
|
|
// Test at 5v
|
|
sim.SetVoltage(5.0);
|
|
EXPECT_EQ(270, pot.Get());
|
|
|
|
sim.SetVoltage(0.0);
|
|
EXPECT_EQ(90, pot.Get());
|
|
|
|
// Simulate a lower battery voltage
|
|
RoboRioSim::SetUserVoltage5V(units::volt_t{2.5});
|
|
|
|
sim.SetVoltage(2.5);
|
|
EXPECT_EQ(270, pot.Get());
|
|
|
|
sim.SetVoltage(2.0);
|
|
EXPECT_EQ(234, pot.Get());
|
|
|
|
sim.SetVoltage(0.0);
|
|
EXPECT_EQ(90, pot.Get());
|
|
}
|
|
} // namespace frc
|