mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
[wpimath] Add arithmetic functions to wheel speeds classes (#5465)
This commit is contained in:
@@ -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());
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
Reference in New Issue
Block a user