public void ShouldComputeAreaAndCircumference()
 {
     int x1 = 2;
     int y1 = 2;
     int x2 = 4;
     int y2 = 4;
     var rectangle = new OverlappingRectangle(x1, y1, x2, y2);
     Assert.AreEqual((4 - 2) * (4 - 2), rectangle.Area);
     Assert.AreEqual(((4 - 2) + (4 - 2)) * 2, rectangle.Circumference);
 }
 public void ComputeAreaAndCircumference_ShouldAlwaysReturnPositiveNumbers()
 {
     int x1 = 4;
     int y1 = 4;
     int x2 = 2;
     int y2 = 2;
     var rectangle = new OverlappingRectangle(x1, y1, x2, y2);
     Assert.AreEqual((4 - 2) * (4 - 2), rectangle.Area);
     Assert.AreEqual(((4 - 2) + (4 - 2)) * 2, rectangle.Circumference);
 }
        public void IsOverlappedWith_ShouldReturnFalse_WhenTwoRectanglesNotOverlap()
        {
            var rectangle1 = new OverlappingRectangle(1, 1, 3, 3);
            var rectangle2 = new OverlappingRectangle(5, 5, 6, 6);
            var rectangle3 = new OverlappingRectangle(-1, -1, 0, 0);
            var rectangle4 = new OverlappingRectangle(-1, 1, 0, 0);
            var rectangle5 = new OverlappingRectangle(1, -1, 0, 0);

            Assert.IsFalse(rectangle1.IsOverlappedWith(rectangle2));
            Assert.IsFalse(rectangle1.IsOverlappedWith(rectangle3));
            Assert.IsFalse(rectangle1.IsOverlappedWith(rectangle4));
            Assert.IsFalse(rectangle1.IsOverlappedWith(rectangle5));

        }
        public void IsAnyOfTheCornerPointsWithInOf_ShouldReturnFalse_WhenAllOfTheOtherFourCornerPoingsIsNotInsideOfTheArea()
        {
            var rectangle1 = new OverlappingRectangle(1, 1, 3, 3);
            var rectangle2 = new OverlappingRectangle( -1, -1, 0, 0);
            var rectangle3 = new OverlappingRectangle(0, -2, 0, 3);
            var rectangle4 = new OverlappingRectangle(0, 4, -1, 0);
            var rectangle5 = new OverlappingRectangle(4, 0, 5, 4);

            Assert.IsFalse(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle2));
            Assert.IsFalse(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle3));
            Assert.IsFalse(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle4));
            Assert.IsFalse(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle5));
            
        }
        public void IsAnyOfTheCornerPointsWithInOf_ShouldReturnTrue_WhenAnyOfTheOtherFourCornerPoingsIsInsideOfTheArea()
        {
            var rectangle1 = new OverlappingRectangle(1, 1, 3, 3);
            var rectangle2 = new OverlappingRectangle(2, 2, 3, 3);
            var rectangle3 = new OverlappingRectangle(0, 0, 2, 2);
            var rectangle4 = new OverlappingRectangle(0, 4, 2, 2);
            var rectangle5 = new OverlappingRectangle(4, 0, 2, 2);

            Assert.IsTrue(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle2));
            Assert.IsTrue(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle3));
            Assert.IsTrue(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle4));
            Assert.IsTrue(rectangle1.IsAnyOfTheCornerPointsWithIn(rectangle5));
            
        }
        public void ShouldReturnMinAndMaxXY()
        {
            var rectangle1 = new OverlappingRectangle(1, 1, 3, 3);
            Assert.AreEqual(1, rectangle1.MinX);
            Assert.AreEqual(1, rectangle1.MinY);
            Assert.AreEqual(3, rectangle1.MaxX);
            Assert.AreEqual(3, rectangle1.MaxY);

            var rectangle2 = new OverlappingRectangle(1, 1, -3, -3);
            Assert.AreEqual(-3, rectangle2.MinX);
            Assert.AreEqual(-3, rectangle2.MinY);
            Assert.AreEqual(1, rectangle2.MaxX);
            Assert.AreEqual(1, rectangle2.MaxY);
        }
        public void IsOverlappedWith_ShouldReturnFalse_WhenTheOtherRectanglesContainsThis()
        {
            var rectangle1 = new OverlappingRectangle(1, 1, 3, 3);
            var rectangle2 = new OverlappingRectangle(0, 0, 6, 6);

            Assert.IsTrue(rectangle1.IsOverlappedWith(rectangle2));
        }