yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
snes_palette_test.cc
Go to the documentation of this file.
2
3#include <gmock/gmock.h>
4#include <gtest/gtest.h>
5
7
8namespace yaze {
9namespace test {
10
11using ::testing::ElementsAreArray;
15
16namespace {
17unsigned int test_convert(snes_color col) {
18 unsigned int toret;
19 toret = col.red << 16;
20 toret += col.green << 8;
21 toret += col.blue;
22 return toret;
23}
24} // namespace
25
26TEST(SnesPaletteTest, AddColor) {
29 palette.AddColor(color);
30 ASSERT_EQ(palette.size(), 1);
31}
32
33TEST(SnesColorTest, ConvertRgbToSnes) {
34 snes_color color = {132, 132, 132};
35 uint16_t snes = ConvertRgbToSnes(color);
36 ASSERT_EQ(snes, 0x4210);
37}
38
39TEST(SnesColorTest, ConvertSnestoRGB) {
40 uint16_t snes = 0x4210;
41 snes_color color = ConvertSnesToRgb(snes);
42 ASSERT_EQ(color.red, 132);
43 ASSERT_EQ(color.green, 132);
44 ASSERT_EQ(color.blue, 132);
45}
46
47TEST(SnesColorTest, ConvertSnesToRGB_Binary) {
48 uint16_t red = 0b0000000000011111;
49 uint16_t blue = 0b0111110000000000;
50 uint16_t green = 0b0000001111100000;
51 uint16_t purple = 0b0111110000011111;
52 snes_color testcolor;
53
54 testcolor = ConvertSnesToRgb(red);
55 ASSERT_EQ(0xFF0000, test_convert(testcolor));
56 testcolor = ConvertSnesToRgb(green);
57 ASSERT_EQ(0x00FF00, test_convert(testcolor));
58 testcolor = ConvertSnesToRgb(blue);
59 ASSERT_EQ(0x0000FF, test_convert(testcolor));
60 testcolor = ConvertSnesToRgb(purple);
61 ASSERT_EQ(0xFF00FF, test_convert(testcolor));
62}
63
64TEST(SnesColorTest, Extraction) {
65 // red, blue, green, purple
66 char data[8] = {0x1F, 0x00, 0x00, 0x7C, static_cast<char>(0xE0),
67 0x03, 0x1F, 0x7C};
68 auto pal = Extract(data, 0, 4);
69 ASSERT_EQ(4, pal.size());
70 ASSERT_EQ(0xFF0000, test_convert(pal[0]));
71 ASSERT_EQ(0x0000FF, test_convert(pal[1]));
72 ASSERT_EQ(0x00FF00, test_convert(pal[2]));
73 ASSERT_EQ(0xFF00FF, test_convert(pal[3]));
74}
75
76TEST(SnesColorTest, Convert) {
77 // red, blue, green, purple white
78 char data[10] = {0x1F,
79 0x00,
80 0x00,
81 0x7C,
82 static_cast<char>(0xE0),
83 0x03,
84 0x1F,
85 0x7C,
86 static_cast<char>(0xFF),
87 0x1F};
88 auto pal = Extract(data, 0, 5);
89 auto snes_string = yaze::gfx::Convert(pal);
90 EXPECT_EQ(10, snes_string.size());
91 EXPECT_THAT(data, ElementsAreArray(snes_string.data(), 10));
92}
93
94} // namespace test
95} // namespace yaze
SNES Color container.
Definition snes_color.h:38
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
void AddColor(const SnesColor &color)
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
Definition snes_color.cc:58
uint16_t ConvertRgbToSnes(const snes_color &color)
Definition snes_color.cc:33
std::vector< char > Convert(const std::vector< snes_color > &palette)
Definition snes_color.cc:69
snes_color ConvertSnesToRgb(uint16_t color_snes)
Definition snes_color.cc:19
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
Definition snes_color.cc:58
uint16_t ConvertRgbToSnes(const snes_color &color)
Definition snes_color.cc:33
snes_color ConvertSnesToRgb(uint16_t color_snes)
Definition snes_color.cc:19
TEST(LC_LZ2_CompressionTest, TrivialRepeatedBytes)
Main namespace for the application.
Definition controller.cc:18
Primitive of 16-bit RGB SNES color.
Definition snes.h:14
uint16_t green
Definition snes.h:17
uint16_t red
Definition snes.h:15
uint16_t blue
Definition snes.h:16