3#include <gmock/gmock.h>
4#include <gtest/gtest.h>
11using ::testing::ElementsAreArray;
19 toret = col.
red << 16;
20 toret += col.
green << 8;
27TEST(SnesColorTest, DefaultConstructor) {
29 EXPECT_EQ(color.
rgb().x, 0.0f);
30 EXPECT_EQ(color.
rgb().y, 0.0f);
31 EXPECT_EQ(color.
rgb().z, 0.0f);
32 EXPECT_EQ(color.
rgb().w, 0.0f);
33 EXPECT_EQ(color.
snes(), 0);
36TEST(SnesColorTest, RGBConstructor) {
37 ImVec4 rgb(1.0f, 0.5f, 0.25f, 1.0f);
39 EXPECT_EQ(color.
rgb().x, rgb.x);
40 EXPECT_EQ(color.
rgb().y, rgb.y);
41 EXPECT_EQ(color.
rgb().z, rgb.z);
42 EXPECT_EQ(color.
rgb().w, rgb.w);
45TEST(SnesColorTest, SNESConstructor) {
46 uint16_t snes = 0x4210;
48 EXPECT_EQ(color.
snes(), snes);
54 ASSERT_EQ(snes, 0x4210);
57TEST(SnesColorTest, ConvertSnestoRGB) {
58 uint16_t snes = 0x4210;
60 ASSERT_EQ(color.
red, 132);
61 ASSERT_EQ(color.
green, 132);
62 ASSERT_EQ(color.
blue, 132);
65TEST(SnesColorTest, ConvertSnesToRGB_Binary) {
66 uint16_t red = 0b0000000000011111;
67 uint16_t blue = 0b0111110000000000;
68 uint16_t green = 0b0000001111100000;
69 uint16_t purple = 0b0111110000011111;
73 ASSERT_EQ(0xFF0000, test_convert(testcolor));
75 ASSERT_EQ(0x00FF00, test_convert(testcolor));
77 ASSERT_EQ(0x0000FF, test_convert(testcolor));
79 ASSERT_EQ(0xFF00FF, test_convert(testcolor));
82TEST(SnesColorTest, Extraction) {
84 char data[8] = {0x1F, 0x00, 0x00, 0x7C,
static_cast<char>(0xE0),
87 ASSERT_EQ(4, pal.size());
88 ASSERT_EQ(0xFF0000, test_convert(pal[0]));
89 ASSERT_EQ(0x0000FF, test_convert(pal[1]));
90 ASSERT_EQ(0x00FF00, test_convert(pal[2]));
91 ASSERT_EQ(0xFF00FF, test_convert(pal[3]));
94TEST(SnesColorTest, Convert) {
96 char data[10] = {0x1F,
100 static_cast<char>(0xE0),
104 static_cast<char>(0xFF),
106 auto pal =
Extract(data, 0, 5);
108 EXPECT_EQ(10, snes_string.size());
109 EXPECT_THAT(data, ElementsAreArray(snes_string.data(), 10));
113TEST(SnesPaletteTest, DefaultConstructor) {
115 EXPECT_TRUE(palette.
empty());
116 EXPECT_EQ(palette.
size(), 0);
119TEST(SnesPaletteTest, AddColor) {
123 ASSERT_EQ(palette.
size(), 1);
126TEST(SnesPaletteTest, AddMultipleColors) {
132 ASSERT_EQ(palette.
size(), 2);
135TEST(SnesPaletteTest, UpdateColor) {
141 auto result = palette[0];
142 ASSERT_EQ(result.snes(), 0x7FFF);
145TEST(SnesPaletteTest, SubPalette) {
155 ASSERT_EQ(sub.size(), 2);
156 auto result = sub[0];
157 ASSERT_EQ(result.snes(), 0x7FFF);
160TEST(SnesPaletteTest, VectorConstructor) {
164 ASSERT_EQ(palette.
size(), 2);
171 ASSERT_EQ(palette.
size(), 1);
173 ASSERT_TRUE(palette.
empty());
176TEST(SnesPaletteTest, Iterator) {
184 for (
const auto& color : palette) {
185 EXPECT_TRUE(color.snes() == 0x4210 || color.snes() == 0x7FFF);
191TEST(SnesPaletteTest, OperatorAccess) {
195 EXPECT_EQ(palette[0].snes(), 0x4210);
constexpr ImVec4 rgb() const
constexpr uint16_t snes() const
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
void AddColor(const SnesColor &color)
SnesPalette sub_palette(size_t start, size_t length) const
void UpdateColor(size_t index, const SnesColor &color)
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
uint16_t ConvertRgbToSnes(const snes_color &color)
std::vector< char > Convert(const std::vector< snes_color > &palette)
snes_color ConvertSnesToRgb(uint16_t color_snes)
unsigned int test_convert(snes_color col)
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
uint16_t ConvertRgbToSnes(const snes_color &color)
snes_color ConvertSnesToRgb(uint16_t color_snes)
TEST(LC_LZ2_CompressionTest, TrivialRepeatedBytes)
Main namespace for the application.
Primitive of 16-bit RGB SNES color.