public void ReturnsNoIntersectionForFullyContainedRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(1, 1, 1, 1);
                RectangleF rec2      = new RectangleF(0, 0, 10, 10);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Intersection();

                //Assert
                Assert.IsFalse(result.IntersectionPresent);
            }
            public void ReturnsNoAdjacencyForRectanglesThatShareSideEdgeButNotTopEdge()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(1, 0, 1, 1);
                RectangleF rec2      = new RectangleF(0, 99, 1, 1);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Adjacency();

                //Assert
                Assert.IsFalse(result.AdjacencyPresent);
            }
            public void ReturnsFiveOutcomesForDifferentValueRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 1, 10, 10);
                RectangleF rec2      = new RectangleF(0, 0, 10, 10);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.GetAnalysis();

                //Assert
                Assert.AreEqual(5, result.GetSummary().Count());
            }
            public void ReturnsSimilarityForRectanglesWithEqualOppositeRatioOnWidthAndHeight()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 2, 4);
                RectangleF rec2      = new RectangleF(0, 0, 8, 4);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Similarity();

                //Assert
                Assert.IsTrue(result.SimilarityPresent);
            }
            public void ReturnsCongruencyForCongruentRectanglesWithOppositeWidthAndHeight()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 4, 2);
                RectangleF rec2      = new RectangleF(0, 0, 2, 4);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Congruence();

                //Assert
                Assert.IsTrue(result.CongruencePresent);
            }
            public void ReturnsNoSimilarityForNonSimilarRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 2, 2);
                RectangleF rec2      = new RectangleF(0, 2, 2, 3);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Similarity();

                //Assert
                Assert.IsFalse(result.SimilarityPresent);
            }
            public void ReturnsNoCongruencyForNonCongruentRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 2, 2);
                RectangleF rec2      = new RectangleF(0, 2, 2, 3);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Congruence();

                //Assert
                Assert.IsFalse(result.CongruencePresent);
            }
            public void ReturnsNoIntersectionForNonOverlappingRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 10, 10);
                RectangleF rec2      = new RectangleF(11, 0, 10, 10);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Intersection();

                //Assert
                Assert.IsFalse(result.IntersectionPresent);
            }
            public void ReturnsNoAdjacencyForInvertedRectanglesNotAdjacentToEachOther()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 3, 2, 2);
                RectangleF rec2      = new RectangleF(2, 0, 2, 2);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Adjacency();

                //Assert
                Assert.IsFalse(result.AdjacencyPresent);
            }
            public void ReturnsAdjacencyForRectanglesAdjacentWithWholeSegmentOnTheTop()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(4, 0, 3, 2);
                RectangleF rec2      = new RectangleF(4, 2, 3, 3);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Adjacency();

                //Assert
                Assert.IsTrue(result.AdjacencyPresent);
            }
            public void ReturnsAdjacencyForInvertedRectanglesAdjacentWithPartialSegmentOnTheSide()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(7, 3, 1, 1);
                RectangleF rec2      = new RectangleF(4, 2, 3, 3);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Adjacency();

                //Assert
                Assert.IsTrue(result.AdjacencyPresent);
            }
            public void ReturnsOnlyEquivalencyForEqualValueRectangles()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 10, 10);
                RectangleF rec2      = new RectangleF(0, 0, 10, 10);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.GetAnalysis();

                //Assert
                Assert.AreEqual("Rectangles are equivalent", result.GetSummary().Single());
            }
            public void ReturnsNoContainmentForRectanglesNotContainedWithinEachOther()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 10, 10);
                RectangleF rec2      = new RectangleF(1, 0, 10, 10);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Containment();

                //Assert
                Assert.IsFalse(result.ContainmentPresent);
            }
            private IntersectionAnalysis SetUp(float x1, float y1, float width1, float height1, float x2, float y2, float width2, float height2)
            {
                //Arrange
                RectangleF rec1      = new RectangleF(x1, y1, width1, height1);
                RectangleF rec2      = new RectangleF(x2, y2, width2, height2);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Intersection();

                return(result);
                //Assert
                //Assert.IsTrue(result.IntersectionPresent);
            }
            public void ReturnsContainmentForRectangle2ContainedWithinRectangle1()
            {
                //Arrange
                RectangleF rec1      = new RectangleF(0, 0, 10, 10);
                RectangleF rec2      = new RectangleF(1, 1, 1, 1);
                var        processor = new RectangleProcessor(rec1, rec2);

                //Act
                var result = processor.Containment();

                //Assert
                Assert.IsTrue(result.ContainmentPresent);
                Assert.IsTrue(result.Rectangle1ContainsRectangle2);
            }
Пример #16
0
        public ActionResult GetRectangleAnalysis(RectanglesFormViewModel model)
        {
            if (ModelState.IsValid)
            {
                var rectangle1 = new RectangleF(model.Rectangle1.X, model.Rectangle1.Y, model.Rectangle1.Width, model.Rectangle1.Height);
                var rectangle2 = new RectangleF(model.Rectangle2.X, model.Rectangle2.Y, model.Rectangle2.Width, model.Rectangle2.Height);

                var rectangleProcessor = new RectangleProcessor(rectangle1, rectangle2);
                return(PartialView(rectangleProcessor.GetAnalysis().GetSummary()));
            }
            else
            {
                return(new HttpStatusCodeResult(400));
            }
        }
Пример #17
0
        public void RectangleBOMBuilderTest()
        {
            // Arrange
            Rectangle rectangle = new Rectangle()
            {
                PositionX = 20,
                PositionY = 30,
                Width     = 40,
                Height    = 50
            };
            string expectedBOM = "Rectangle(20,30) width=40 height=50";

            RectangleProcessor processor = new RectangleProcessor();

            // Act
            string returnedBOM = processor.BOMBuilder(rectangle);

            // Assert
            Assert.AreEqual(expectedBOM, returnedBOM);
        }