using DesignPatterns.Factory; using MbUnit.Framework; namespace DesignPatterns.Test { [TestFixture] public class MoneyTest { [Test] public void Should_Be_Equal( ) { Assert.IsTrue( new Money( 5 ).Equals( new Money( 5 ) ) ); } [Test] public void _Should_Be_Able_To_Add_Two_Monies_Together( ) { IMoney sum = new Money( 5 ).Add( new Money( 5 ) ); Assert.IsTrue( sum.Equals( new Money( 10 ) ) ); } [Test] public void _Should_Be_Able_To_Subtract_Two_Monies( ) { IMoney balance = new Money( 5 ).Subtract( new Money( 3 ) ); Assert.IsTrue( balance.Equals( new Money( 2 ) ), "Should have a 2 monies" ); } [Test] public void _Should_Be_Able_To_Subtract_Many_Monies( ) { IMoney balance = new Money( 5 ).Subtract( new Money( 3 ) ).Subtract( new Money( 1 ) ); Assert.IsTrue( balance.Equals( new Money( 1 ) ), "Should have 1 monies" ); } [Test] public void Should_Have_A_Currency( ) { new Money( 5, Currency.Canadian ); } [Test] [ExpectedException( typeof( CannotAddMoniesException ) )] public void Should_Only_Add_Monies_Of_The_Same_Currency( ) { new Money( 5, Currency.Canadian ).Add( new Money( 5, Currency.American ) ); } [Test] [ExpectedException( typeof( NegativeMoneyException ) )] public void Should_Not_Be_Able_To_Construct_Negative_Money( ) { new Money( -5 ); } [Test] public void Should_Return_5_Monies( ) { Assert.IsTrue( new Money( 5 ).Equals( new Money( 5 ).Add( null ) ) ); } } }