public void PutNextRectangle_ShouldAddRectanglesInAccordanceToShapeOfACircle()
        {
            Point center = _fixture.Create <Point>();
            CircularCloudLayouter sut = new CircularCloudLayouter(center);
            var rectangleSizes        = _fixture.Build <Size>()
                                        .With(size => size.Width, () => NumberValueFactories.InRange(10, 100))
                                        .With(size => size.Height, () => NumberValueFactories.InRange(10, 100))
                                        .CreateMany(100);

            _rectangles = rectangleSizes
                          .Select(size => sut.PutNextRectangle(size));
            var roundness = CalculateRoundness(center, _rectangles);

            roundness.Should().BeGreaterOrEqualTo(0.8);
        }
        public void PutNextRectangle_ShouldCreateNonIntersectingRectangles()
        {
            Point center = _fixture.Create <Point>();
            CircularCloudLayouter sut = new CircularCloudLayouter(center);
            var rectangleSizes        = _fixture.Build <Size>()
                                        .With(size => size.Width, () => NumberValueFactories.InRange(10, 100))
                                        .With(size => size.Height, () => NumberValueFactories.InRange(10, 100))
                                        .CreateMany(100);

            _rectangles = rectangleSizes
                          .Select(size => sut.PutNextRectangle(size));

            var rectanglesIsIntersects = RectanglesIsIntersects(_rectangles.ToImmutableList());

            rectanglesIsIntersects.Should().BeFalse();
        }
        public void PutNextRectangle_ShouldAddRectanglesWithAllowableDensity()
        {
            Point center = _fixture.Create <Point>();
            CircularCloudLayouter sut = new CircularCloudLayouter(center);
            var rectangleSizes        = _fixture.Build <Size>()
                                        .With(size => size.Width, () => NumberValueFactories.InRange(10, 100))
                                        .With(size => size.Height, () => NumberValueFactories.InRange(10, 100))
                                        .CreateMany(100);

            /*_rectangles = rectangleSizes
             *  .Select(size => sut.PutNextRectangle(size));
             * _rectangles = _rectangles.Append(new Rectangle(new Point(center.X - 1, center.Y - 1), new Size(3, 3)));*/

            var bitmaper = new Bitmaper();

            foreach (var rectangleSize in rectangleSizes)
            {
                _rectangles = _rectangles.Append(sut.PutNextRectangle(rectangleSize));
                bitmaper.Draw(_rectangles, "debug.bmp");
            }
            var density = CalculateDensity(center, _rectangles);

            density.Should().BeGreaterOrEqualTo(0.8);
        }