Пример #1
0
        public void ToHsl_ShouldBeCorrect_AtDecimals()
        {
            var hsl = Hsv.FromScaledValues(60.2, 53, 70.91).ToHsl();

            hsl.RoundedScaledHue.ShouldBe(60.2);
            hsl.RoundedScaledSaturation.ShouldBe(39.25);
            hsl.RoundedScaledLuminance.ShouldBe(52.12);
        }
Пример #2
0
        public void ToHsl_ShouldBeCorrect_AtMaxHue()
        {
            var hsl = Hsv.FromScaledValues(360, 50, 50).ToHsl();

            hsl.RoundedScaledHue.ShouldBe(360);
            hsl.RoundedScaledSaturation.ShouldBe(33.33);
            hsl.RoundedScaledLuminance.ShouldBe(37.5);
        }
Пример #3
0
        public void RoundedValue100_ShouldRound()
        {
            // Half-up
            Hsv.FromScaledValues(240, 100, 59.645).RoundedScaledValue.ShouldBe(59.65);

            // Down
            Hsv.FromScaledValues(240, 100, 59.644).RoundedScaledValue.ShouldBe(59.64);
        }
Пример #4
0
        public void ToRgb_ShouldBeCorrect_AtMaxHue()
        {
            var rgb = Hsv.FromScaledValues(360, 50, 50).ToRgb();

            rgb.ScaledRed.ShouldBeEquivalentTo(128);
            rgb.ScaledGreen.ShouldBeEquivalentTo(64);
            rgb.ScaledBlue.ShouldBeEquivalentTo(64);
        }
Пример #5
0
        public void RoundedSaturation100_ShouldRound()
        {
            // Half-up
            Hsv.FromScaledValues(240, 59.645, 100).RoundedScaledSaturation.ShouldBe(59.65);

            // Down
            Hsv.FromScaledValues(240, 59.644, 100).RoundedScaledSaturation.ShouldBe(59.64);
        }
Пример #6
0
        public void RoundedHue_ShouldRound()
        {
            // Half-up
            Hsv.FromScaledValues(240.585, 100, 50).RoundedScaledHue.ShouldBe(240.59);

            // Down
            Hsv.FromScaledValues(240.584, 100, 50).RoundedScaledHue.ShouldBe(240.58);
        }
Пример #7
0
        public void ToRgb_ShouldBeCorrect_AtDecimals()
        {
            var rgb = Hsv.FromScaledValues(60.2, 53, 70.91).ToRgb();

            rgb.ScaledRed.ShouldBeEquivalentTo(181);
            rgb.ScaledGreen.ShouldBeEquivalentTo(181);
            rgb.ScaledBlue.ShouldBeEquivalentTo(85);

            rgb = Hsv.FromScaledValues(60.3, 53, 70.91).ToRgb();
            rgb.ScaledRed.ShouldBeEquivalentTo(180);
            rgb.ScaledGreen.ShouldBeEquivalentTo(181);
            rgb.ScaledBlue.ShouldBeEquivalentTo(85);
        }
        // Conversion tool for reference:
        // https://www.easyrgb.com/en/convert.php#inputFORM

        public IEnumerable <object[]> GetData(MethodInfo methodInfo)
        {
            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Black",
                    Rgb = new Rgb(0, 0, 0),
                    Hsl = new Hsl(0, 0, 0),
                    Hsv = new Hsv(0, 0, 0),
                    Cmyk = new Cmyk(0, 0, 0, 1),
                    Xyz = new Xyz(0, 0, 0),
                    Lab = new Lab(0, 0, 0)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "White",
                    Rgb = new Rgb(1, 1, 1),
                    Hsl = new Hsl(0, 0, 1),
                    Hsv = new Hsv(0, 0, 1),
                    Cmyk = new Cmyk(0, 0, 0, 0),
                    Xyz = new Xyz(95.047, 100, 108.883),
                    Lab = new Lab(100, 0, 0)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Red",
                    Rgb = new Rgb(1, 0, 0),
                    Hsl = new Hsl(0, 1, 0.5),
                    Hsv = new Hsv(0, 1, 1),
                    Cmyk = new Cmyk(0, 1, 1, 0),
                    Xyz = new Xyz(41.2456, 21.2673, 1.9334),
                    Lab = new Lab(53.2408, 80.0925, 67.2032)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Green",
                    Rgb = new Rgb(0, 1, 0),
                    Hsl = Hsl.FromScaledValues(120, 100, 50),
                    Hsv = Hsv.FromScaledValues(120, 100, 100),
                    Cmyk = new Cmyk(1, 0, 1, 0),
                    Xyz = new Xyz(35.7576, 71.5152, 11.9192),
                    Lab = new Lab(87.7347, -86.1827, 83.1793)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Blue",
                    Rgb = new Rgb(0, 0, 1),
                    Hsl = Hsl.FromScaledValues(240, 100, 50),
                    Hsv = Hsv.FromScaledValues(240, 100, 100),
                    Cmyk = new Cmyk(1, 1, 0, 0),
                    Xyz = new Xyz(18.0437, 7.2175, 95.0304),
                    Lab = new Lab(32.297, 79.1875, -107.8602)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Material Blue",
                    Rgb = Rgb.FromScaledValues(33, 150, 243),
                    Hsl = Hsl.FromScaledValues(206.5716, 89.744, 54.118),
                    Hsv = Hsv.FromScaledValues(206.5716, 86.42, 95.294),
                    Cmyk = Cmyk.FromScaledValues(86.419753, 38.271604, 0, 4.705882),
                    Xyz = new Xyz(27.704960365063513, 28.60350077011483, 88.83745176406208),
                    Lab = new Lab(60.4301, 2.0799, -55.1094)
                }
            });

            yield return(new object[]
            {
                new ColorData
                {
                    Name = "Purple HEX to HSL/HSV issue",
                    Rgb = Rgb.FromScaledValues(116, 58, 111),
                    Hsl = Hsl.FromScaledValues(305.172, 33.333, 34.118),
                    Hsv = Hsv.FromScaledValues(305.172, 50, 45.49),
                    Cmyk = Cmyk.FromScaledValues(0, 50, 4.310, 54.510),
                    Xyz = new Xyz(11.5846, 7.8875, 15.9481),
                    Lab = new Lab(33.7475, 33.4761, -19.6542)
                }
            });
        }
Пример #9
0
 public void Value_ShouldBeClamped()
 {
     Hsv.FromScaledValues(120, 0, -1).ScaledValue.ShouldBe(0);
     Hsv.FromScaledValues(120, 0, 101).ScaledValue.ShouldBe(100);
 }
Пример #10
0
 public void Saturation_ShouldBeClamped()
 {
     Hsv.FromScaledValues(120, -1, 100).ScaledSaturation.ShouldBe(0);
     Hsv.FromScaledValues(120, 101, 100).ScaledSaturation.ShouldBe(100);
 }
Пример #11
0
 public void Hue_ShouldBeClamped()
 {
     Hsv.FromScaledValues(-0.01, 100, 100).ScaledHue.ShouldBe(0);
     new Hsv(360.01, 100, 100).ScaledHue.ShouldBe(360);
 }