Esempio n. 1
0
 public void PutNextRectangle_ShouldReturnRectangleWithSameSize_WhenSomeSizesAdded()
 {
     foreach (var size in SizesGenerator.GenerateSizes(5, minSize, maxSize, seed:128))
     {
         layouter.PutNextRectangle(size).GetValueOrThrow().Size.Should().BeEquivalentTo(size);
     }
 }
Esempio n. 2
0
        public void Layout_ShouldContainsAllRectangles_WhenSomeSizesAdded()
        {
            var sizes      = SizesGenerator.GenerateSizes(5, minSize, maxSize, seed: 128);
            var rectangles = FillLayoutWithSomeRectangles(layouter, sizes);

            rectangles.Select(rect => rect.Size).Should().BeEquivalentTo(sizes);
        }
Esempio n. 3
0
        // Пример раскладки
        static void Main()
        {
            var sizes = SizesGenerator.GenerateSizes(500,
                                                     new Size(100, 100), new Size(300, 300));

            DrawLayout(sizes, "random");
            var stringLikeSizes = SizesGenerator.GenerateSizes(300,
                                                               new Size(300, 100), new Size(1000, 300));

            DrawLayout(stringLikeSizes, "string_like");
        }
Esempio n. 4
0
        public void LayoutRectangles_ShouldNotIntersectEachOther_WhenSomeRectanglesAdded()
        {
            var sizes = SizesGenerator.GenerateSizes(25, minSize, maxSize, seed: 128);

            FillLayoutWithSomeRectangles(layouter, sizes);

            var rectangles = new List <Rectangle>();

            foreach (var rectangle in rectangles)
            {
                IsRectangleIntersectOther(rectangles, rectangle).Should().BeFalse("rectangles must not intersect");
            }
        }
Esempio n. 5
0
        public void LayoutOccupiedArea_ShouldBeGreaterOrEqualThanMinimal_WhenManySizesAdded()
        {
            var sizes      = SizesGenerator.GenerateSizes(600, minSize, maxSize, seed: 128);
            var rectangles = FillLayoutWithSomeRectangles(layouter, sizes);

            var occupiedArea = rectangles.Sum(rectangle => rectangle.Width * rectangle.Height);

            var maxLayoutRadius = 0.0;

            foreach (var rectangle in rectangles)
            {
                var maxDistanceToRectangle = GetMaxDistanceToRectangle(layoutCenter, rectangle);
                if (maxLayoutRadius < maxDistanceToRectangle)
                {
                    maxLayoutRadius = maxDistanceToRectangle;
                }
            }

            var totalArea = GetCircleAreaFromRadius(maxLayoutRadius);
            var actualOccupiedAreaRatio = occupiedArea / totalArea;

            actualOccupiedAreaRatio.Should().BeGreaterOrEqualTo(MinOccupiedAreaRatio);
        }