Beispiel #1
0
        public IAreableCalculator GetAreaCalculator()
        {
            var resolver = new TriangleCalculatorResolver(
                new RectangularTriangleAreaCalculator(this),
                new TriangleAreaCommonCalculator(this),
                new TrianglePropertiesCalculator());

            return(new TriangleAreaCalculator(this, resolver));
        }
        public void Test_Resolve_Return_TriangleAreaCommonCalculator_if_Triangle_Is_Not_Rectangular()
        {
            //Arrange
            var triangle = _fixture.Create <Triangle>();
            var rectangularTriangleAreaCalculator = new RectangularTriangleAreaCalculator(triangle);
            var triangleAreaCommonCalculator      = new TriangleAreaCommonCalculator(triangle);
            var trianglePropertiesCalculator      = _fixture.Create <ITrianglePropertiesCalculator>();

            trianglePropertiesCalculator.IsRectangular(triangle).Returns(false);

            //Act
            var service = new TriangleCalculatorResolver(rectangularTriangleAreaCalculator, triangleAreaCommonCalculator, trianglePropertiesCalculator);
            var actual  = service.Resolve(triangle);

            //Assert
            actual.Should().BeOfType <TriangleAreaCommonCalculator>();
            actual.Should().Be(triangleAreaCommonCalculator);
            trianglePropertiesCalculator.Received(1).IsRectangular(triangle);
            trianglePropertiesCalculator.ReceivedCalls().Should().HaveCount(1);
        }