public void LayoutOccupiedArea_ShouldBeGreaterOrEqualThanMinimal_WhenManySizesAdded() { var sizes = SizesGenerator.GenerateSizes(600, minSize, maxSize, seed: 128); FillLayoutWithSomeRectangles(layouter, sizes); var occupiedArea = layouter.Rectangles .Sum(rectangle => rectangle.Width * rectangle.Height); var maxLayoutRadius = 0.0; foreach (var rectangle in layouter.Rectangles) { var maxDistanceToRectangle = GetMaxDistanceToRectangle(layouter.Center, rectangle); if (maxLayoutRadius < maxDistanceToRectangle) { maxLayoutRadius = maxDistanceToRectangle; } } var totalArea = GetCircleAreaFromRadius(maxLayoutRadius); var actualOccupiedAreaRatio = occupiedArea / totalArea; actualOccupiedAreaRatio.Should().BeGreaterOrEqualTo(MinOccupiedAreaRatio); }
public void PutNextRectangle_ShouldReturnRectangleWithSameSize_WhenSomeSizesAdded() { foreach (var size in SizesGenerator.GenerateSizes(5, minSize, maxSize, seed:128)) { layouter.PutNextRectangle(size).Size .Should().BeEquivalentTo(size); } }
public void Layout_ShouldContainsAllRectangles_WhenSomeSizesAdded() { var sizes = SizesGenerator.GenerateSizes(5, minSize, maxSize, seed: 128); FillLayoutWithSomeRectangles(layouter, sizes); layouter.Rectangles.Select(rect => rect.Size) .Should().BeEquivalentTo(sizes); }
public void LayoutRectangles_ShouldNotIntersectEachOther_WhenSomeRectanglesAdded() { var sizes = SizesGenerator.GenerateSizes(25, minSize, maxSize, seed: 128); FillLayoutWithSomeRectangles(layouter, sizes); foreach (var rectangle in layouter.Rectangles) { IsRectangleIntersectOther(layouter, rectangle) .Should().BeFalse("rectangles must not intersect"); } }