mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
[wpilib] Add hex string constructor to Color and Color8Bit (#5063)
Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
62
wpilibc/src/test/native/cpp/util/Color8BitTest.cpp
Normal file
62
wpilibc/src/test/native/cpp/util/Color8BitTest.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
// 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/util/Color8Bit.h"
|
||||
|
||||
TEST(Color8BitTest, ConstructDefault) {
|
||||
constexpr frc::Color8Bit color;
|
||||
|
||||
EXPECT_EQ(0, color.red);
|
||||
EXPECT_EQ(0, color.green);
|
||||
EXPECT_EQ(0, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromInts) {
|
||||
constexpr frc::Color8Bit color{255, 128, 64};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromColor) {
|
||||
constexpr frc::Color8Bit color{frc::Color{255, 128, 64}};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ConstructFromHexString) {
|
||||
constexpr frc::Color8Bit color{"#FF8040"};
|
||||
|
||||
EXPECT_EQ(255, color.red);
|
||||
EXPECT_EQ(128, color.green);
|
||||
EXPECT_EQ(64, color.blue);
|
||||
|
||||
// No leading #
|
||||
EXPECT_THROW(frc::Color8Bit{"112233"}, std::invalid_argument);
|
||||
|
||||
// Too long
|
||||
EXPECT_THROW(frc::Color8Bit{"#11223344"}, std::invalid_argument);
|
||||
|
||||
// Invalid hex characters
|
||||
EXPECT_THROW(frc::Color8Bit{"#$$$$$$"}, std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(Color8BitTest, ImplicitConversionToColor) {
|
||||
frc::Color color = frc::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 frc::Color8Bit color{255, 128, 64};
|
||||
|
||||
EXPECT_EQ("#FF8040", color.HexString());
|
||||
}
|
||||
62
wpilibc/src/test/native/cpp/util/ColorTest.cpp
Normal file
62
wpilibc/src/test/native/cpp/util/ColorTest.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
// 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/util/Color.h"
|
||||
|
||||
TEST(ColorTest, ConstructDefault) {
|
||||
constexpr frc::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 frc::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);
|
||||
}
|
||||
|
||||
TEST(ColorTest, ConstructFromInts) {
|
||||
constexpr frc::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, ConstructFromHexString) {
|
||||
constexpr frc::Color color{"#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(frc::Color{"112233"}, std::invalid_argument);
|
||||
|
||||
// Too long
|
||||
EXPECT_THROW(frc::Color{"#11223344"}, std::invalid_argument);
|
||||
|
||||
// Invalid hex characters
|
||||
EXPECT_THROW(frc::Color{"#$$$$$$"}, std::invalid_argument);
|
||||
}
|
||||
|
||||
TEST(ColorTest, FromHSV) {
|
||||
constexpr frc::Color color = frc::Color::FromHSV(90, 128, 64);
|
||||
|
||||
EXPECT_DOUBLE_EQ(0.1256103515625, color.red);
|
||||
EXPECT_DOUBLE_EQ(0.2510986328125, color.green);
|
||||
EXPECT_DOUBLE_EQ(0.2510986328125, color.blue);
|
||||
}
|
||||
|
||||
TEST(ColorTest, ToHexString) {
|
||||
constexpr frc::Color color{255, 128, 64};
|
||||
|
||||
EXPECT_EQ("#FF8040", color.HexString());
|
||||
}
|
||||
Reference in New Issue
Block a user