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); }