Example #1
0
        public Result <Rectangle> PutNextRectangle(Size rectangleSize)
        {
            if (pointGenerator == null)
            {
                return(Result.Fail <Rectangle>("Point generator cannot be null"));
            }
            if (rectangleSize.Height <= 0 || rectangleSize.Width <= 0)
            {
                return(Result.Fail <Rectangle>("Rectangle size must be more than zero"));
            }

            Point point;

            try
            {
                point = pointGenerator.GetNextPoint();
                while (!CheckRectanglePosition(point, rectangleSize))
                {
                    point = pointGenerator.GetNextPoint();
                }
            }
            catch (Exception e)
            {
                return(Result.Fail <Rectangle>(e.Message));
            }

            var rectangle = GetLocatedRectangle(point, rectangleSize);

            cloudRectangles.Add(rectangle);
            pointGenerator.StartOver();

            return(rectangle);
        }
Example #2
0
        public void StartOverPointGenerator_ShouldResetGeneration()
        {
            var expectedPoints = new Point[3];

            for (int i = 0; i < 3; i++)
            {
                expectedPoints[i] = sut.GetNextPoint();
            }

            sut.StartOver();

            var actualPoints = new Point[3];

            for (int i = 0; i < 3; i++)
            {
                actualPoints[i] = sut.GetNextPoint();
            }

            actualPoints.Should().Equal(expectedPoints);
        }
Example #3
0
        public Rectangle PutNextRectangle(Size rectangleSize)
        {
            if (rectangleSize.Height <= 0 || rectangleSize.Width <= 0)
            {
                throw new ArgumentException("Rectangle size must be more than zero");
            }

            var point = pointGenerator.GetNextPoint();

            while (!CheckRectanglePosition(point, rectangleSize))
            {
                point = pointGenerator.GetNextPoint();
            }

            var rectangle = GetLocatedRectangle(point, rectangleSize);

            cloudRectangles.Add(rectangle);
            pointGenerator.StartOver();

            return(rectangle);
        }