mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
[wpiutil] Move Color and Color8Bit from wpilib to wpiutil (#8437)
Removes one of the org.wpilib.util package conflicts for modularization. Only a few minor tweaks were required to remove the wpimath dependency.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -60,7 +60,7 @@ TEST(Mechanism2dTest, Ligament) {
|
||||
wpi::MechanismRoot2d* root = mechanism.GetRoot("root", 1, 2);
|
||||
wpi::MechanismLigament2d* ligament = root->Append<wpi::MechanismLigament2d>(
|
||||
"ligament", 3, wpi::units::degree_t{90}, 1,
|
||||
wpi::Color8Bit{255, 255, 255});
|
||||
wpi::util::Color8Bit{255, 255, 255});
|
||||
wpi::SmartDashboard::PutData("mechanism", &mechanism);
|
||||
EXPECT_EQ(ligament->GetAngle(), angleEntry.GetDouble(0.0));
|
||||
EXPECT_EQ(ligament->GetColor().HexString(), colorEntry.GetString(""));
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
// 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 "wpi/util/Color8Bit.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(Color8BitTest, ConstructDefault) {
|
||||
constexpr wpi::Color8Bit color;
|
||||
|
||||
EXPECT_EQ(0, color.red);
|
||||
EXPECT_EQ(0, color.green);
|
||||
EXPECT_EQ(0, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromInts) {
|
||||
constexpr wpi::Color8Bit color{255, 128, 64};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromColor) {
|
||||
constexpr wpi::Color8Bit color{wpi::Color{255, 128, 64}};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromHexString) {
|
||||
constexpr wpi::Color8Bit color{"#FF8040"};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
|
||||
// No leading #
|
||||
EXPECT_THROW(wpi::Color8Bit{"112233"}, std::invalid_argument);
|
||||
|
||||
// Too long
|
||||
EXPECT_THROW(wpi::Color8Bit{"#11223344"}, std::invalid_argument);
|
||||
|
||||
// Invalid hex characters
|
||||
EXPECT_THROW(wpi::Color8Bit{"#$$$$$$"}, std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ImplicitConversionToColor) {
|
||||
wpi::Color color = wpi::Color8Bit{255, 128, 64};
|
||||
|
||||
EXPECT_NEAR(1.0, color.red, 1e-2);
|
||||
EXPECT_NEAR(0.5, color.green, 1e-2);
|
||||
EXPECT_NEAR(0.25, color.blue, 1e-2);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ToHexString) {
|
||||
constexpr wpi::Color8Bit color1{255, 128, 64};
|
||||
EXPECT_EQ("#FF8040", color1.HexString());
|
||||
|
||||
// Ensure conversion to std::string works
|
||||
[[maybe_unused]]
|
||||
std::string str = color1.HexString();
|
||||
|
||||
wpi::Color8Bit color2{255, 128, 64};
|
||||
EXPECT_EQ("#FF8040", color2.HexString());
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
// 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 "wpi/util/Color.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(ColorTest, ConstructDefault) {
|
||||
constexpr wpi::Color color;
|
||||
|
||||
EXPECT_DOUBLE_EQ(0.0, color.red);
|
||||
EXPECT_DOUBLE_EQ(0.0, color.green);
|
||||
EXPECT_DOUBLE_EQ(0.0, color.blue);
|
||||
}
|
||||
|
||||
TEST(ColorTest, ConstructFromDoubles) {
|
||||
{
|
||||
constexpr wpi::Color color{1.0, 0.5, 0.25};
|
||||
|
||||
EXPECT_NEAR(1.0, color.red, 1e-2);
|
||||
EXPECT_NEAR(0.5, color.green, 1e-2);
|
||||
EXPECT_NEAR(0.25, color.blue, 1e-2);
|
||||
}
|
||||
|
||||
{
|
||||
constexpr wpi::Color color{1.0, 0.0, 0.0};
|
||||
|
||||
// Check for exact match to ensure round-and-clamp is correct
|
||||
EXPECT_EQ(1.0, color.red);
|
||||
EXPECT_EQ(0.0, color.green);
|
||||
EXPECT_EQ(0.0, color.blue);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(ColorTest, ConstructFromInts) {
|
||||
constexpr wpi::Color color{255, 128, 64};
|
||||
|
||||
EXPECT_NEAR(1.0, color.red, 1e-2);
|
||||
EXPECT_NEAR(0.5, color.green, 1e-2);
|
||||
EXPECT_NEAR(0.25, color.blue, 1e-2);
|
||||
}
|
||||
|
||||
TEST(ColorTest, FromHexString) {
|
||||
constexpr wpi::Color color = wpi::Color::FromString("#FF8040");
|
||||
|
||||
EXPECT_NEAR(1.0, color.red, 1e-2);
|
||||
EXPECT_NEAR(0.5, color.green, 1e-2);
|
||||
EXPECT_NEAR(0.25, color.blue, 1e-2);
|
||||
|
||||
// No leading #
|
||||
EXPECT_THROW(wpi::Color::FromString("112233"), std::invalid_argument);
|
||||
|
||||
// Too long
|
||||
EXPECT_THROW(wpi::Color::FromString("#11223344"), std::invalid_argument);
|
||||
|
||||
// Invalid hex characters
|
||||
EXPECT_THROW(wpi::Color::FromString("#$$$$$$"), std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(ColorTest, FromRGBString) {
|
||||
constexpr wpi::Color color = wpi::Color::FromString("rgb(255, 128, 64)");
|
||||
|
||||
EXPECT_NEAR(1.0, color.red, 1e-2);
|
||||
EXPECT_NEAR(0.5, color.green, 1e-2);
|
||||
EXPECT_NEAR(0.25, color.blue, 1e-2);
|
||||
|
||||
// Missing rgb()
|
||||
EXPECT_THROW(wpi::Color::FromString("255, 128, 64"), std::invalid_argument);
|
||||
|
||||
// Too few components
|
||||
EXPECT_THROW(wpi::Color::FromString("rgb(255, 128)"), std::invalid_argument);
|
||||
|
||||
// Too many components
|
||||
EXPECT_THROW(wpi::Color::FromString("rgb(255, 128, 64, 32)"),
|
||||
std::invalid_argument);
|
||||
|
||||
// Non-integer component
|
||||
EXPECT_THROW(wpi::Color::FromString("rgb(255, abc, 64)"),
|
||||
std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(ColorTest, FromHSV) {
|
||||
constexpr wpi::Color color = wpi::Color::FromHSV(90, 128, 64);
|
||||
|
||||
EXPECT_DOUBLE_EQ(0.125732421875, color.red);
|
||||
EXPECT_DOUBLE_EQ(0.251220703125, color.green);
|
||||
EXPECT_DOUBLE_EQ(0.251220703125, color.blue);
|
||||
}
|
||||
|
||||
TEST(ColorTest, ToHexString) {
|
||||
constexpr wpi::Color color1{255, 128, 64};
|
||||
EXPECT_EQ("#FF8040", color1.HexString());
|
||||
|
||||
// Ensure conversion to std::string works
|
||||
[[maybe_unused]]
|
||||
std::string str = color1.HexString();
|
||||
|
||||
wpi::Color color2{255, 128, 64};
|
||||
EXPECT_EQ("#FF8040", color2.HexString());
|
||||
}
|
||||
Reference in New Issue
Block a user