[wpimath] Add arithmetic functions to wheel speeds classes (#5465)

This commit is contained in:
Gold856
2023-08-31 14:57:24 -04:00
committed by GitHub
parent 10d4f5b5df
commit 8e2465f8a0
10 changed files with 561 additions and 7 deletions

View File

@@ -0,0 +1,54 @@
// 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 "frc/kinematics/DifferentialDriveWheelSpeeds.h"
TEST(DifferentialDriveWheelSpeedsTest, Plus) {
const frc::DifferentialDriveWheelSpeeds left{1.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds right{2.0_mps, 1.5_mps};
const frc::DifferentialDriveWheelSpeeds result = left + right;
EXPECT_EQ(3.0, result.left.value());
EXPECT_EQ(2.0, result.right.value());
}
TEST(DifferentialDriveWheelSpeedsTest, Minus) {
const frc::DifferentialDriveWheelSpeeds left{1.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds right{2.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds result = left - right;
EXPECT_EQ(-1.0, result.left.value());
EXPECT_EQ(0, result.right.value());
}
TEST(DifferentialDriveWheelSpeedsTest, UnaryMinus) {
const frc::DifferentialDriveWheelSpeeds speeds{1.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds result = -speeds;
EXPECT_EQ(-1.0, result.left.value());
EXPECT_EQ(-0.5, result.right.value());
}
TEST(DifferentialDriveWheelSpeedsTest, Multiplication) {
const frc::DifferentialDriveWheelSpeeds speeds{1.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds result = speeds * 2;
EXPECT_EQ(2.0, result.left.value());
EXPECT_EQ(1.0, result.right.value());
}
TEST(DifferentialDriveWheelSpeedsTest, Division) {
const frc::DifferentialDriveWheelSpeeds speeds{1.0_mps, 0.5_mps};
const frc::DifferentialDriveWheelSpeeds result = speeds / 2;
EXPECT_EQ(0.5, result.left.value());
EXPECT_EQ(0.25, result.right.value());
}

View File

@@ -0,0 +1,64 @@
// 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 "frc/kinematics/MecanumDriveWheelSpeeds.h"
TEST(MecanumDriveWheelSpeedsTest, Plus) {
const frc::MecanumDriveWheelSpeeds left{1.0_mps, 0.5_mps, 2.0_mps, 1.5_mps};
const frc::MecanumDriveWheelSpeeds right{2.0_mps, 1.5_mps, 0.5_mps, 1.0_mps};
const frc::MecanumDriveWheelSpeeds result = left + right;
EXPECT_EQ(3.0, result.frontLeft.value());
EXPECT_EQ(2.0, result.frontRight.value());
EXPECT_EQ(2.5, result.rearLeft.value());
EXPECT_EQ(2.5, result.rearRight.value());
}
TEST(MecanumDriveWheelSpeedsTest, Minus) {
const frc::MecanumDriveWheelSpeeds left{1.0_mps, 0.5_mps, 2.0_mps, 1.5_mps};
const frc::MecanumDriveWheelSpeeds right{2.0_mps, 1.5_mps, 0.5_mps, 1.0_mps};
const frc::MecanumDriveWheelSpeeds result = left - right;
EXPECT_EQ(-1.0, result.frontLeft.value());
EXPECT_EQ(-1.0, result.frontRight.value());
EXPECT_EQ(1.5, result.rearLeft.value());
EXPECT_EQ(0.5, result.rearRight.value());
}
TEST(MecanumDriveWheelSpeedsTest, UnaryMinus) {
const frc::MecanumDriveWheelSpeeds speeds{1.0_mps, 0.5_mps, 2.0_mps, 1.5_mps};
const frc::MecanumDriveWheelSpeeds result = -speeds;
EXPECT_EQ(-1.0, result.frontLeft.value());
EXPECT_EQ(-0.5, result.frontRight.value());
EXPECT_EQ(-2.0, result.rearLeft.value());
EXPECT_EQ(-1.5, result.rearRight.value());
}
TEST(MecanumDriveWheelSpeedsTest, Multiplication) {
const frc::MecanumDriveWheelSpeeds speeds{1.0_mps, 0.5_mps, 2.0_mps, 1.5_mps};
const frc::MecanumDriveWheelSpeeds result = speeds * 2;
EXPECT_EQ(2.0, result.frontLeft.value());
EXPECT_EQ(1.0, result.frontRight.value());
EXPECT_EQ(4.0, result.rearLeft.value());
EXPECT_EQ(3.0, result.rearRight.value());
}
TEST(MecanumDriveWheelSpeedsTest, Division) {
const frc::MecanumDriveWheelSpeeds speeds{1.0_mps, 0.5_mps, 2.0_mps, 1.5_mps};
const frc::MecanumDriveWheelSpeeds result = speeds / 2;
EXPECT_EQ(0.5, result.frontLeft.value());
EXPECT_EQ(0.25, result.frontRight.value());
EXPECT_EQ(1.0, result.rearLeft.value());
EXPECT_EQ(0.75, result.rearRight.value());
}