public void PutNextRectangle_PutsRectanglesInCircleShape() { var random = new Random(); var count = 100; var center = _cloud.Center; foreach (var size in SizeGenerator.GenerateRandomSize()) { _cloud.PutNextRectangle(size); count--; if (count <= 0) { break; } } var minX = _cloud.Rectangles.Min(rect => rect.Left); var minY = _cloud.Rectangles.Min(rect => rect.Top); var maxX = _cloud.Rectangles.Max(rect => rect.Right); var maxY = _cloud.Rectangles.Max(rect => rect.Bottom); var rad = Math.Max(maxY - minY, maxX - minX); // (x - center_x)^2 + (y - center_y)^2 < radius^2. foreach (var localRad in _cloud.Rectangles .Select(rect => GetRectCenter(rect)) .Select(rectCenter => Math.Pow(rectCenter.X - center.X, 2) + Math.Pow(rectCenter.Y - center.Y, 2))) { localRad.Should().BeLessThan(Math.Pow(rad, 2)); } }
public void PutNextRectangle_CollectNotIntersectingRectangles_On100Iterations() { var random = new Random(); var count = 100; foreach (var size in SizeGenerator.GenerateRandomSize()) { _cloud.PutNextRectangle(size); count--; if (count <= 0) { break; } } foreach (var rectangle in _cloud.Rectangles) { rectangle.IntersectsWithAny(_cloud.Rectangles .Where(rect => !rect.Equals(rectangle))) .Should().BeFalse(); } }