Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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();
            }
        }