public void SimpleTriangleTest()
        {
            // Arrange
            var triangle           = new ThreeLinesTriangle(2.5, 3, 4);
            var triangleCalculator = new TriangleAreaCalculator();

            // Act
            var calculatedArea = triangleCalculator.TryCalculateArea(triangle);

            // Assert
            Assert.AreEqual(3.7453095666446585, calculatedArea, DoubleEquality.Epsilon);
        }
        public void LineTriangleTest()
        {
            // Arrange
            var triangle           = new ThreeLinesTriangle(6, 2.5, 3.5);
            var triangleCalculator = new TriangleAreaCalculator();

            // Act
            var calculatedArea = triangleCalculator.TryCalculateArea(triangle);

            // Assert
            Assert.AreEqual(0, calculatedArea, DoubleEquality.Epsilon);
        }
Example #3
0
        public void SimpleRightAngleTriangleTest()
        {
            // Arrange
            var triangle           = new ThreeLinesTriangle(4, 5, 3);
            var triangleCalculator = new RightAngleTriangleCalculator();

            // Act
            var calculatedArea = triangleCalculator.TryCalculateArea(triangle);

            // Assert
            Assert.AreEqual(6, calculatedArea, DoubleEquality.Epsilon);
        }
Example #4
0
        public void BigEpsilonTest()
        {
            // Arrange
            var triangle           = new ThreeLinesTriangle(1, 2, 2.2);
            var triangleCalculator = new RightAngleTriangleCalculator(0.5);

            // Act
            var calculatedArea = triangleCalculator.TryCalculateArea(triangle);

            // Assert
            Assert.NotNull(calculatedArea);
        }
Example #5
0
        public void NotRightAngleCalculatorTest(double a, double b, double c)
        {
            // Arrange
            var triangle           = new ThreeLinesTriangle(a, b, c);
            var triangleCalculator = new RightAngleTriangleCalculator();

            // Act
            var calculatedArea = triangleCalculator.TryCalculateArea(triangle);

            // Assert
            Assert.Null(calculatedArea);
        }
Example #6
0
        public void IntegrationTest()
        {
            // Arrange
            var circle         = new Circle(1);
            var customFigure   = new TestFigure();
            var innerComposite = new CompositeFigure(new FigureBase[] { circle, customFigure });

            var emptyComposite = new CompositeFigure(Array.Empty <FigureBase>());
            var triangle       = new ThreeLinesTriangle(2.5, 3, 4);

            var composite = new CompositeFigure(new FigureBase[] { innerComposite, emptyComposite, triangle });
            var circle2   = new Circle(2);

            var customCalculatorNotUsed = new Mock <ITryAreaCalculator>(MockBehavior.Default);

            customCalculatorNotUsed.Setup(it => it.TryCalculateArea(customFigure))
            .Throws(new AssertionException("Should not be called"));

            var customCalculator = new Mock <ITryAreaCalculatorWithPriority>(MockBehavior.Default);

            customCalculator.Setup(it => it.TryCalculateArea(customFigure)).Returns(15.2);
            customCalculator.Setup(it => it.GetPriority(customFigure)).Returns(100);

            var areaCalculator = new AreaCalculator();

            areaCalculator.Calculators.Add(new CompositeAreaCalculator(areaCalculator));
            areaCalculator.Calculators.Add(new TriangleAreaCalculator());
            areaCalculator.Calculators.Add(new RightAngleTriangleCalculator());
            areaCalculator.Calculators.Add(new CircleAreaCalculator());
            areaCalculator.Calculators.Add(customCalculatorNotUsed.Object);
            areaCalculator.Calculators.Add(customCalculator.Object);

            // Act
            var compositeArea = areaCalculator.CalculateArea(composite);
            var triangleArea  = areaCalculator.CalculateArea(triangle);
            var circle2Area   = areaCalculator.CalculateArea(circle2);

            // Assert
            const double ExpectedTriangleArea  = 3.7453095666446585;
            var          expectedCompositeArea = Math.PI + 15.2 + ExpectedTriangleArea;

            Assert.AreEqual(expectedCompositeArea, compositeArea, DoubleEquality.Epsilon);
            Assert.AreEqual(ExpectedTriangleArea, triangleArea, DoubleEquality.Epsilon);
            Assert.AreEqual(4 * Math.PI, circle2Area, DoubleEquality.Epsilon);
        }