コード例 #1
0
        public void PutNextRectangle_OnFirstSize_ReturnsRectangleWithCenterInSpecifiedPoint(int xCenter, int yCenter)
        {
            var center = new Point(xCenter, yCenter);
            var firstRectangle = new CircularCloudLayouter(center).PutNextRectangle(new Size(100, 50));

            wrongVisualizationCloud = new WrongVisualizationCloud(
                TestsHelper.BackgroundColor,
                TestsHelper.TagStyleByTagType,
                (firstRectangle, new Rectangle(center, new Size(1, 1))));

            firstRectangle.CheckIfPointIsCenterOfRectangle(center, Precision).Should().BeTrue();
        }
コード例 #2
0
        public void PutNextRectangle_OnFirstSize_ReturnsRectangleWithCenterInTheOrigin(int width, int height)
        {
            circularCloudLayouter = new CircularCloudLayouter(origin);
            var firstRectangle = circularCloudLayouter.PutNextRectangle(new Size(width, height));

            wrongVisualizationCloud = new WrongVisualizationCloud(
                TestsHelper.BackgroundColor,
                TestsHelper.TagStyleByTagType,
                (firstRectangle, new Rectangle(origin, new Size(1, 1))));

            firstRectangle.CheckIfPointIsCenterOfRectangle(origin, Precision).Should().BeTrue();
        }
コード例 #3
0
        public void PutNextRectangle_OnSecondSize_ReturnsNotIntersectedRectangle()
        {
            var firstRectangle  = circularCloudLayouter.PutNextRectangle(new Size(10, 5));
            var secondRectangle = circularCloudLayouter.PutNextRectangle(new Size(7, 3));

            TestsHelper.HandleErrors(error => error.Should().BeNull(), firstRectangle, secondRectangle);

            wrongVisualizationCloud = new WrongVisualizationCloud(TestsHelper.BackgroundColor,
                                                                  TestsHelper.TagStyleByTagType,
                                                                  (firstRectangle.Value, secondRectangle.Value));

            firstRectangle.Value.IntersectsWith(secondRectangle.Value).Should().BeFalse();
        }
コード例 #4
0
        public void AlwaysFailedTest()
        {
            var imageCenter = new Point(VisualizationImageSize.Width / 2,
                                        VisualizationImageSize.Height / 2);
            var cloudLayouter = new CircularCloudLayouter(imageCenter);

            var randomizer       = TestContext.CurrentContext.Random;
            var rectangleResults = Enumerable.Range(0, 50)
                                   .Select(i => cloudLayouter.PutNextRectangle(
                                               new Size(randomizer.Next(50, 100), randomizer.Next(50, 100))))
                                   .Append(new Rectangle(imageCenter.X + 45, imageCenter.Y + 90, 86, 54).AsResult());

            var rectangles = TestsHelper.SelectValues(rectangleResults).ToArray();

            var intersectingRectangles = TestsHelper.GetAnyPairOfIntersectingRectangles(rectangles);

            if (intersectingRectangles.HasValue)
            {
                wrongVisualizationCloud = new WrongVisualizationCloud(TestsHelper.BackgroundColor,
                                                                      TestsHelper.TagStyleByTagType,
                                                                      intersectingRectangles.Value, rectangles);
            }

            Assert.Fail("Should fail to test logging functionality.");
        }
コード例 #5
0
        public void PutNextRectangle_OnSecondSize_ReturnsNotIntersectedRectangle()
        {
            var firstRectangle  = circularCloudLayouter.PutNextRectangle(new Size(10, 5));
            var secondRectangle = circularCloudLayouter.PutNextRectangle(new Size(7, 3));

            wrongVisualizationCloud = new WrongVisualizationCloud((firstRectangle, secondRectangle));

            firstRectangle.IntersectsWith(secondRectangle).Should().BeFalse();
        }
コード例 #6
0
        public void PutNextRectangle_OnALotOfCallsWithRandomSize_ReturnsDenseRoundlyCloud()
        {
            var randomizer = TestContext.CurrentContext.Random;
            var rectangles = Enumerable.Range(0, randomizer.Next(50, 100))
                             .Select(i => new Size(randomizer.Next(40, 100), randomizer.Next(40, 80)))
                             .Select(size => circularCloudLayouter.PutNextRectangle(size))
                             .ToArray();

            wrongVisualizationCloud = new WrongVisualizationCloud(rectangles);

            var maxRadius = rectangles.Max(rectangle => ImageCenter.GetDistanceToPoint(rectangle.GetRectangleCenter()));
            var maxArea   = maxRadius * maxRadius * Math.PI;
            var cloudArea = rectangles.Sum(rectangle => rectangle.Height * rectangle.Width);

            (cloudArea / maxArea).Should().BeGreaterOrEqualTo(0.65);
        }
コード例 #7
0
        public void PutNextRectangle_OnALotOfCalls_ReturnsNotIntersectedRectangles()
        {
            var randomizer = TestContext.CurrentContext.Random;

            var rectangles = Enumerable.Range(0, 60)
                             .Select(i => circularCloudLayouter.PutNextRectangle(
                                         new Size(randomizer.Next(50, 100), randomizer.Next(50, 100))))
                             .ToArray();

            var intersectingRectangles = TestsHelper.GetAnyPairOfIntersectingRectangles(rectangles);

            if (intersectingRectangles.HasValue)
            {
                wrongVisualizationCloud = new WrongVisualizationCloud(intersectingRectangles.Value, rectangles);
            }

            intersectingRectangles.Should().BeNull();
        }
コード例 #8
0
 public void SetUp()
 {
     circularCloudLayouter   = new CircularCloudLayouter(ImageCenter);
     wrongVisualizationCloud = null;
 }