public void PutNextRectangle_ShouldReturnRectangleWithSameSize_WhenSomeSizesAdded() { foreach (var size in SizesGenerator.GenerateSizes(5, minSize, maxSize, seed:128)) { layouter.PutNextRectangle(size).GetValueOrThrow().Size.Should().BeEquivalentTo(size); } }
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); }
// Пример раскладки 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"); }
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"); } }
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); }