public void PutNextRectangle_PlaceFirstRectangleOnCenter_WhenOnlyOneRectangle()
        {
            var rectangle = new SpiralCloudLayouter(imageSettings)
                            .PutNextRectangle(MakeRandomSize());

            rectangle.GetValueOrThrow().X.Should().Be(imageSettings.Width / 2);
            rectangle.GetValueOrThrow().Y.Should().Be(imageSettings.Height / 2);
        }
 public void SetUp()
 {
     imageSettings       = new ImageSettings();
     spiralCloudLayouter = new SpiralCloudLayouter(imageSettings);
     for (var i = 0; i < 70; i++)
     {
         spiralCloudLayouter.PutNextRectangle(MakeRandomSize());
     }
 }
        public void PutNextRectangle_PlaceRectangleOnSpiral()
        {
            var circularCloudLayouter = new SpiralCloudLayouter(imageSettings);
            var centerX     = imageSettings.Width / 2;
            var centerY     = imageSettings.Height / 2;
            var coordinates = new[]
            {
                new Point(centerX, centerY), new Point(centerX, centerY + 1), new Point(centerX - 1, centerY + 1),
                new Point(centerX - 1, centerY), new Point(centerX - 2, centerY), new Point(centerX - 2, centerY - 1),
                new Point(centerX - 1, centerY - 2), new Point(centerX - 1, centerY - 3),
                new Point(centerX, centerY - 3),
                new Point(centerX + 1, centerY - 3), new Point(centerX + 2, centerY - 3),
                new Point(centerX + 3, centerY - 2)
            };

            foreach (var pointOnSpiral in coordinates)
            {
                var rectangle = circularCloudLayouter.PutNextRectangle(new Size(1, 1));
                rectangle.GetValueOrThrow().Location.GetDistanceTo(pointOnSpiral).Should()
                .BeLessOrEqualTo(1.05 * rectangle.GetValueOrThrow().GetDiagonal());
            }
        }