public void ColorForAllTags_ShouldBeSame()
        {
            var firstTag     = "first";
            var secondTag    = "second";
            var firstCorner  = new Point(10, 10);
            var secondCorner = new Point(10, 30);

            Graphics.FromImage(Expected).DrawString(firstTag, DefaultFont, DefaultBrush, (PointF)firstCorner);
            Graphics.FromImage(Expected).DrawString(secondTag, DefaultFont, DefaultBrush, (PointF)secondCorner);

            Decorator.DecorateTag(firstTag, DefaultFont, new Rectangle(firstCorner, GetTagSize(firstTag)),
                                  Graphics.FromImage(Actual));
            Decorator.DecorateTag(secondTag, DefaultFont, new Rectangle(secondCorner, GetTagSize(secondTag)),
                                  Graphics.FromImage(Actual));

            BitmapsAreEqual(Actual, Expected).Should().BeTrue();
        }
        public void FontColor_ShouldBeFading_FarAwayFromCenter()
        {
            var tags    = new[] { "test", "test", "test" };
            var corners = new[] { new Point(10, 100), new Point(10, 140), new Point(10, 180) };

            var graphics = Graphics.FromImage(Actual);

            for (int i = 0; i < tags.Length; i++)
            {
                Decorator.DecorateTag(tags[i], DefaultFont, new Rectangle(corners[i], GetTagSize(tags[i])), graphics);
            }

            var gropedTags = EnumerateColorsFromLines(Actual, Enumerable.Range((int)corners[0].Y, 10))
                             .Zip(EnumerateColorsFromLines(Actual, Enumerable.Range((int)corners[1].Y, 10)), Tuple.Create)
                             .Zip(EnumerateColorsFromLines(Actual, Enumerable.Range((int)corners[2].Y, 10)),
                                  (tuple, a) => Tuple.Create(tuple.Item1, tuple.Item2, a));

            foreach (var group in gropedTags)
            {
                group.Should().Match <Tuple <Color, Color, Color> >(tuple => ColorsAreFading(tuple));
            }
        }