using Calculator.Domain; using Calculator.Test.Extensions; using MbUnit.Framework; namespace Calculator.Test.domain { [TestFixture] public class CurrentCalculationTest { public ICurrentCalculation CreateSUT() { return new CurrentCalculation( new StandardCalculator( ) ); } [RowTest] [Row( 10, 20, 30 )] [Row( 30, 69, 99 )] public void should_be_able_to_add_two_numbers_together( int left, int right, int expectedResult ) { var calculation = CreateSUT( ); calculation.Enter( Number( left ) ); calculation.Include( Operators.Addition ); calculation.Enter( Number( right ) ); var result = calculation.IsEqualTo( ); result.ShouldBeEqualTo( Number( expectedResult ) ); } [Test] public void should_be_able_to_subtract_one_number_from_another() { var calculation = CreateSUT(); calculation.Enter( Number(48) ); calculation.Include( Operators.Subtraction ); calculation.Enter( Number(42) ); var resultOfCalculation = calculation.IsEqualTo(); resultOfCalculation.ShouldBeEqualTo( Number(6) ); } [Test] public void should_be_able_to_subtract_one_number_from_another_then_add_a_number() { var calculation = CreateSUT(); calculation.Enter( Number(53) ); calculation.Include( Operators.Subtraction ); calculation.Enter( Number(35) ); calculation.Include( Operators.Addition ); calculation.Enter( Number(22) ); var resultOfCalculation = calculation.IsEqualTo( ); resultOfCalculation.ShouldBeEqualTo( Number( 40) ); } private INumber Number( long number ) { return new Number( number ); } } }