Skip to content

more CSS Color syntax variants #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 46 additions & 6 deletions test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,60 @@ void ASSERT_EQUAL(const optional<Color>& expected, const optional<Color>& actual

int main() {
try {
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, " rgba (255, 128, 12, 0.5)");
ASSERT_EQUAL(Color{ 255, 128, 12, 1 }, " rgb (255, 128, 12)");
ASSERT_EQUAL(Color{ 255, 128, 12, 1 }, "rgb(255,128,12)");
ASSERT_EQUAL(Color{ 255, 128, 12, 1 }, "RGB(255,128,12)");
ASSERT_EQUAL(Color{ 255, 128, 12, 1 }, "rgb( 255 , 128 , 12 )");
ASSERT_EQUAL(Color{ 255, 127, 0, 1 }, "rgb(100%, 50%, 0%)");
ASSERT_EQUAL(Color{ 255, 127, 0, 0.5 }, "rgb(100%, 50%, 0%, 50%)");
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "rgba(255, 128, 12, 0.5)");
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "RGBa(255, 128, 12, 0.5)");
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "rgba(255, 128, 12, 50%)");
ASSERT_EQUAL(Color{ 255, 255, 255, 1 }, "#fff");
ASSERT_EQUAL(Color{ 255, 255, 255, 1 }, "#FFF");
ASSERT_EQUAL(Color{ 255, 255, 255, 1 }, "#fFf");
ASSERT_EQUAL(Color{ 255, 0, 17, 1 }, "#ff0011");
ASSERT_EQUAL(Color{ 106, 90, 205, 1 }, "slateblue");
ASSERT_EQUAL({}, "blah");
ASSERT_EQUAL({}, "ffffff");
ASSERT_EQUAL(Color{ 255, 255, 255, 1 }, "#ffff"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 255, 255, 0 }, "#fff0"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 0, 17, 1 }, "#ff0011ff"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 0, 17, 0 }, "#ff001100"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 128, 12, 1 }, "rgb(255 128 12)"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "rgb(255, 128, 12, 0.5)"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "rgb(255 128 12 / 0.5)"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 128, 12, 0.5 }, "rgba(255 128 12 / 0.5)"); // NOTE: level 4
ASSERT_EQUAL({}, "rgb(255 128 12 0.5)"); // NOTE: slash is required before alpha
ASSERT_EQUAL(Color{ 255, 127, 0, 1 }, "rgb(100% 50% 0%)"); // NOTE: level 4
ASSERT_EQUAL(Color{ 255, 127, 0, 0.5 }, "rgb(100% 50% 0% / 50%)"); // NOTE: level 4
ASSERT_EQUAL({}, "rgb(100% 50% 0% 50%)"); // NOTE: slash is required before alpha
ASSERT_EQUAL(Color{ 0, 0, 255, 1 }, "blue");
ASSERT_EQUAL(Color{ 0, 0, 255, 1 }, "Blue");
ASSERT_EQUAL(Color{ 0, 0, 255, 1 }, "BLUE");
ASSERT_EQUAL(Color{ 112, 128, 144, 1 }, "slategray");
ASSERT_EQUAL(Color{ 112, 128, 144, 1 }, "slategrey");
ASSERT_EQUAL(Color{ 112, 128, 144, 1 }, "SlateGrey");
ASSERT_EQUAL({}, "slate-grey");
ASSERT_EQUAL(Color{ 0, 0, 0, 0 }, "transparent"); // NOTE: transparent black
ASSERT_EQUAL({}, "blah"); // NOTE: invalid color name
ASSERT_EQUAL({}, "#fffff"); // NOTE: invalid hex code, five digits
ASSERT_EQUAL({}, "ffffff"); // NOTE: invalid hex code, no hash prefix
ASSERT_EQUAL(Color{ 226, 233, 233, 0.5 }, "hsla(900, 15%, 90%, 0.5)");
ASSERT_EQUAL({}, "hsla(900, 15%, 90%)");
ASSERT_EQUAL(Color{ 226, 233, 233, 0.5 }, "hsla(900, 15%, 90%, 50%)");
ASSERT_EQUAL({}, "hsla(900, 15%, 90%)"); // NOTE: missing alpha value
ASSERT_EQUAL(Color{ 226, 233, 233, 1 }, "hsl(900, 15%, 90%)");
ASSERT_EQUAL(Color{ 226, 233, 233, 1 }, "hsl(900, 0.15, 90%)"); // NOTE: not spec compliamt.
ASSERT_EQUAL(Color{ 226, 233, 233, 1 }, "hsl(900, 0.15, 90%)"); // NOTE: not spec compliant
ASSERT_EQUAL(Color{ 0, 0, 0, 1 }, "hsl(9999999999999999999, 0, 0)"); // NOTE: float precision loss
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(45, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(-315, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(-675, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(45, 100%, 50%)"); // NOTE: degree unit is implied
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(45deg, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(45DEG, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(405deg, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(-315deg, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(-675deg, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(0.785398rad, 100%, 50%)"); // NOTE: pi/4
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(0.125turn, 100%, 50%)");
ASSERT_EQUAL(Color{ 255, 191, 0, 1 }, "hsl(50grad, 100%, 50%)");

// Out of range:
ASSERT_EQUAL({}, "xxx");
Expand Down