44
55using namespace CSSColorParser ;
66
7- std::ostream& operator <<(std::ostream& os, const Color& color) {
8- return os << " rgba(" << int (color.r ) << " , " << int (color.g ) << " , " << int (color.b ) << " , "
9- << color.a << " )" ;
7+ std::ostream& operator <<(std::ostream& os, const optional<Color>& color) {
8+ if (color) {
9+ return os << " rgba(" << int (color->r ) << " , " << int (color->g ) << " , " << int (color->b )
10+ << " , " << color->a << " )" ;
11+ } else {
12+ return os << " <no color>" ;
13+ }
1014}
1115
1216static bool errored = false ;
1317
14- void ASSERT_EQUAL (const Color& expected, const std::string& input) {
18+ void ASSERT_EQUAL (const optional< Color> & expected, const std::string& input) {
1519 const auto actual = parse (input);
1620 if (expected != actual) {
1721 errored = true ;
1822 std::cerr << " \033 [1mERROR!: expected " << expected << " != parsed " << actual
1923 << " when parsing \" " << input << " \"\033 [0m" << std::endl;
2024 } else {
21- std::cerr << " Passed: " << actual << std::endl;
25+ std::cerr << " Passed: " << actual << " expected when parsing \" " << input << " \" " << std::endl;
2226 }
2327}
2428
25- void ASSERT_EQUAL (const Color& expected, const Color& actual) {
29+ void ASSERT_EQUAL (const optional< Color> & expected, const optional< Color> & actual) {
2630 if (expected != actual) {
2731 errored = true ;
2832 std::cerr << " \033 [1mERROR!: expected " << expected << " != actual " << actual << " \"\033 [0m" << std::endl;
2933 } else {
30- std::cerr << " Passed: " << actual << std::endl;
34+ std::cerr << " Passed: " << actual << " expected " << std::endl;
3135 }
3236}
3337
@@ -37,15 +41,15 @@ int main() {
3741 ASSERT_EQUAL (Color{ 255 , 255 , 255 , 1 }, " #fff" );
3842 ASSERT_EQUAL (Color{ 255 , 0 , 17 , 1 }, " #ff0011" );
3943 ASSERT_EQUAL (Color{ 106 , 90 , 205 , 1 }, " slateblue" );
40- ASSERT_EQUAL (Color{ 0 , 0 , 0 , 1 }, " blah" );
41- ASSERT_EQUAL (Color{ 0 , 0 , 0 , 1 }, " ffffff" );
44+ ASSERT_EQUAL ({ }, " blah" );
45+ ASSERT_EQUAL ({ }, " ffffff" );
4246 ASSERT_EQUAL (Color{ 226 , 233 , 233 , 0.5 }, " hsla(900, 15%, 90%, 0.5)" );
43- ASSERT_EQUAL (Color{ 0 , 0 , 0 , 1 }, " hsla(900, 15%, 90%)" );
47+ ASSERT_EQUAL ({ }, " hsla(900, 15%, 90%)" );
4448 ASSERT_EQUAL (Color{ 226 , 233 , 233 , 1 }, " hsl(900, 15%, 90%)" );
4549 ASSERT_EQUAL (Color{ 226 , 233 , 233 , 1 }, " hsl(900, 0.15, 90%)" ); // NOTE: not spec compliamt.
4650
4751 // Out of range:
48- ASSERT_EQUAL (Color{ 0 , 0 , 0 , 1 }, " xxx" );
52+ ASSERT_EQUAL ({ }, " xxx" );
4953 ASSERT_EQUAL (Color{ 255 , 128 , 12 , 1 }, " rgba (255, 128, 12, 2)" );
5054 ASSERT_EQUAL (Color{ 255 , 128 , 12 , 1 }, " rgba (400, 128, 12, 2)" );
5155 ASSERT_EQUAL (Color{ 255 , 128 , 12 , 1 }, Color{ 255 , 128 , 12 , 3 });
0 commit comments