import std.math : approxEqual; with(RGB888(0, 0, 0).toHSV) { assert(hue == 0); assert(saturation == 0); assert(value == 0); } with(RGB888(0, 128, 192).toHSV) { assert(hue.approxEqual(0.5555555)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(0.752941)); } with(RGB888(255, 255, 0).toHSV) { assert(hue.approxEqual(0.166667)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(1.0)); } with(RGB888(255, 0, 0).toHSV) { assert(hue.approxEqual(0.0)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(1.0)); } with(RGB888(255, 0, 255).toHSV) { assert(hue.approxEqual(0.833333)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(1.0)); } with(RGB888(0, 255, 0).toHSV) { assert(hue.approxEqual(0.333333)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(1.0)); } with(RGB888(0, 0, 255).toHSV) { assert(hue.approxEqual(0.666667)); assert(saturation.approxEqual(1.0)); assert(value.approxEqual(1.0)); }