2019-12-16 02:33:26 +00:00
|
|
|
#include <string>
|
|
|
|
#include <cstdlib>
|
|
|
|
#include <clocale>
|
|
|
|
#include "main.h"
|
|
|
|
|
|
|
|
class InternalsTest : public :: testing::Test {
|
|
|
|
protected:
|
|
|
|
void SetUp() override {
|
|
|
|
setlocale(LC_ALL, "");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIWhite) {
|
|
|
|
unsigned r, g, b;
|
2019-12-16 22:36:00 +00:00
|
|
|
for(r = 250 ; r < 256 ; ++r){
|
|
|
|
g = b = r;
|
2019-12-16 22:43:09 +00:00
|
|
|
EXPECT_EQ(15, rgb_quantize_256(r, g, b));
|
2019-12-16 22:36:00 +00:00
|
|
|
}
|
2019-12-16 02:33:26 +00:00
|
|
|
}
|
2019-12-16 04:13:13 +00:00
|
|
|
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIBlack) {
|
|
|
|
unsigned r, g, b;
|
2019-12-16 22:36:00 +00:00
|
|
|
for(r = 0 ; r < 10 ; ++r){
|
|
|
|
g = b = r;
|
2019-12-16 22:43:09 +00:00
|
|
|
EXPECT_EQ(0, rgb_quantize_256(r, g, b));
|
2019-12-16 22:36:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIGrey) {
|
|
|
|
unsigned r, g, b;
|
|
|
|
for(r = 10 ; r < 244 ; ++r){
|
|
|
|
g = b = r;
|
2019-12-16 22:43:09 +00:00
|
|
|
EXPECT_EQ(231 + (r * 5) / 49, rgb_quantize_256(r, g, b));
|
2019-12-16 22:36:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Pure reds are either 0 (black), or 16 plus 36 * [0..5].
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIRed) {
|
|
|
|
unsigned r, g, b;
|
|
|
|
g = b = 0x0;
|
|
|
|
for(r = 0 ; r < 256 ; ++r){
|
2019-12-16 22:43:09 +00:00
|
|
|
int c256 = rgb_quantize_256(r, g, b);
|
2019-12-16 22:36:00 +00:00
|
|
|
if(r < 8){
|
|
|
|
EXPECT_EQ(0, c256);
|
|
|
|
}else{
|
|
|
|
EXPECT_LT(15, c256);
|
|
|
|
EXPECT_EQ(16, c256 % 36);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Pure greens are either 0 (black), or 16 plus 6 * [0..5].
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIGreen) {
|
|
|
|
unsigned r, g, b;
|
|
|
|
r = b = 0x0;
|
|
|
|
for(g = 0 ; g < 256 ; ++g){
|
2019-12-16 22:43:09 +00:00
|
|
|
int c256 = rgb_quantize_256(r, g, b);
|
2019-12-16 22:36:00 +00:00
|
|
|
EXPECT_GT(48, c256);
|
|
|
|
if(g < 8){
|
|
|
|
EXPECT_EQ(0, c256);
|
|
|
|
}else{
|
|
|
|
EXPECT_LT(15, c256);
|
|
|
|
EXPECT_EQ(4, c256 % 6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Pure blues are either 0 (black), or one of the first 6 colors [16..22].
|
|
|
|
TEST_F(InternalsTest, RGBtoANSIBlue) {
|
|
|
|
unsigned r, g, b;
|
|
|
|
r = g = 0x0;
|
|
|
|
for(b = 0 ; b < 256 ; ++b){
|
2019-12-16 22:43:09 +00:00
|
|
|
int c256 = rgb_quantize_256(r, g, b);
|
2019-12-16 22:36:00 +00:00
|
|
|
EXPECT_GT(22, c256);
|
|
|
|
if(b < 8){
|
|
|
|
EXPECT_EQ(0, c256);
|
|
|
|
}else{
|
|
|
|
EXPECT_LT(15, c256);
|
|
|
|
}
|
|
|
|
}
|
2019-12-16 04:13:13 +00:00
|
|
|
}
|