public static void TestRgbOutput(
            double hue,
            double saturation,
            double value,
            byte expectedRed,
            byte exptectedGreen,
            byte exptectedBlue)
        {
            var rgb = RgbHsvConversion.HsvToRgb(hue, saturation, value);

            rgb.Item1.Should().Be(expectedRed);
            rgb.Item2.Should().Be(exptectedGreen);
            rgb.Item3.Should().Be(exptectedBlue);
        }
        public static void TestHsvOutput(
            byte red,
            byte green,
            byte blue,
            double expectedHue,
            double expectedSaturation,
            double expectedValue)
        {
            var hsv = RgbHsvConversion.RgbToHsv(red, green, blue);

            // approximate-assertions needed because of small deviations due to converting between byte-values and double-values.
            hsv.Item1.Should().BeApproximately(expectedHue, 0.2);
            hsv.Item2.Should().BeApproximately(expectedSaturation, 0.002);
            hsv.Item3.Should().BeApproximately(expectedValue, 0.002);
        }
        public static void ValueOutOfRange_ThrowsArgumentOutOfRangeException()
        {
            Action act = () => RgbHsvConversion.HsvToRgb(0, 0, 2);

            act.Should().Throw <ArgumentOutOfRangeException>();
        }