[wpimath] ChassisSpeeds: Add arithmetic functions (#5293)

Co-authored-by: Ryan Blue <ryanzblue@gmail.com>
Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
camaj
2023-07-18 16:30:21 -07:00
committed by GitHub
parent 335e7dd89d
commit c69e34c80c
4 changed files with 241 additions and 0 deletions

View File

@@ -15,3 +15,55 @@ TEST(ChassisSpeedsTest, FieldRelativeConstruction) {
EXPECT_NEAR(1.0, chassisSpeeds.vy.value(), kEpsilon);
EXPECT_NEAR(0.5, chassisSpeeds.omega.value(), kEpsilon);
}
TEST(ChassisSpeedsTest, Plus) {
const frc::ChassisSpeeds left{1.0_mps, 0.5_mps, 0.75_rad_per_s};
const frc::ChassisSpeeds right{2.0_mps, 1.5_mps, 0.25_rad_per_s};
const frc::ChassisSpeeds result = left + right;
EXPECT_NEAR(3.0, result.vx.value(), kEpsilon);
EXPECT_NEAR(2.0, result.vy.value(), kEpsilon);
EXPECT_NEAR(1.0, result.omega.value(), kEpsilon);
}
TEST(ChassisSpeedsTest, Minus) {
const frc::ChassisSpeeds left{1.0_mps, 0.5_mps, 0.75_rad_per_s};
const frc::ChassisSpeeds right{2.0_mps, 0.5_mps, 0.25_rad_per_s};
const frc::ChassisSpeeds result = left - right;
EXPECT_NEAR(-1.0, result.vx.value(), kEpsilon);
EXPECT_NEAR(0, result.vy.value(), kEpsilon);
EXPECT_NEAR(0.5, result.omega.value(), kEpsilon);
}
TEST(ChassisSpeedsTest, UnaryMinus) {
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
const frc::ChassisSpeeds result = -speeds;
EXPECT_NEAR(-1.0, result.vx.value(), kEpsilon);
EXPECT_NEAR(-0.5, result.vy.value(), kEpsilon);
EXPECT_NEAR(-0.75, result.omega.value(), kEpsilon);
}
TEST(ChassisSpeedsTest, Multiplication) {
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
const frc::ChassisSpeeds result = speeds * 2;
EXPECT_NEAR(2.0, result.vx.value(), kEpsilon);
EXPECT_NEAR(1.0, result.vy.value(), kEpsilon);
EXPECT_NEAR(1.5, result.omega.value(), kEpsilon);
}
TEST(ChassisSpeedsTest, Division) {
const frc::ChassisSpeeds speeds{1.0_mps, 0.5_mps, 0.75_rad_per_s};
const frc::ChassisSpeeds result = speeds / 2;
EXPECT_NEAR(0.5, result.vx.value(), kEpsilon);
EXPECT_NEAR(0.25, result.vy.value(), kEpsilon);
EXPECT_NEAR(0.375, result.omega.value(), kEpsilon);
}