コード例 #1
0
        public void Multiplier_equal_0_then_throw_exception()
        {
            //Given
            IExchangeService service = new ExchangeService();
            //When
            ArgumentNullException exception =
                Assert.Throws <ArgumentNullException>(() =>
                                                      service.Times(FakeDataBuilder.MakeDollar(5), 0));

            //Then
            Assert.Contains("Multiplier can not be 0", exception.Message);
        }
コード例 #2
0
        public void If_Create_Money_Then_Get_Currency_It_Should_Be_Return_Currency()
        {
            //Given
            var fiveBucks = FakeDataBuilder.MakeDollar(5);
            var fiveFranc = FakeDataBuilder.MakeFranc(5);

            //When

            //Then
            Assert.Equal("USD", fiveBucks.GetCurrency());
            Assert.Equal("CHF", fiveFranc.GetCurrency());
        }
コード例 #3
0
        public void Exchange_currency_then_return_assign_currency_and_correct_amount()
        {
            //Given
            IExchangeService exchange = new ExchangeService();
            var tenFranc = FakeDataBuilder.MakeFranc(10);

            exchange.AddRate("CHF", "USD", 2);
            //When
            ICurrencyExpression result = exchange.Exchange(tenFranc, "USD");

            //Then
            Assert.Equal(FakeDataBuilder.MakeDollar(5), result);
        }
コード例 #4
0
        public void Not_setting_Rate_Then_Exchange_then_throw_exception()
        {
            //Given
            IExchangeService exchange = new ExchangeService();
            var tenFranc = FakeDataBuilder.MakeFranc(10);
            //When
            ArgumentNullException exception =
                Assert.Throws <ArgumentNullException>(() =>
                                                      exchange.Exchange(tenFranc, "USD"));

            //Then
            Assert.Contains("Before Exchange must be setting Exchange rates", exception.Message);
        }
コード例 #5
0
        public void If_Same_Amount_Currency_Then_Compare_Equal_It_Should_Be_Return_True()
        {
            //Given
            var fiveBucks = FakeDataBuilder.MakeDollar(5);
            var fiveFranc = FakeDataBuilder.MakeFranc(5);

            //When

            //Then
            Assert.True(fiveBucks.Equals(FakeDataBuilder.MakeDollar(5)));
            Assert.False(fiveBucks.Equals(FakeDataBuilder.MakeDollar(6)));
            Assert.True(fiveFranc.Equals(FakeDataBuilder.MakeFranc(5)));
            Assert.False(fiveFranc.Equals(FakeDataBuilder.MakeFranc(6)));
            Assert.False(fiveFranc.Equals(FakeDataBuilder.MakeDollar(5)));
        }
コード例 #6
0
        public void Currency_Times_N_then_return_amount_multiplied_by_N()
        {
            //Given
            IExchangeService exchange     = new ExchangeService();
            int fakeAmount                = 5;
            ICurrencyExpression fiveBucks = FakeDataBuilder.MakeDollar(fakeAmount);
            ICurrencyExpression fiveFranc = FakeDataBuilder.MakeFranc(fakeAmount);
            //When
            var result = exchange.Times(fiveBucks, 8);

            //Then
            Assert.True(FakeDataBuilder.MakeDollar(10).Equals(exchange.Times(fiveBucks, 2)));
            Assert.True(FakeDataBuilder.MakeDollar(15).Equals(exchange.Times(fiveBucks, 3)));
            Assert.True(FakeDataBuilder.MakeFranc(10).Equals(exchange.Times(fiveFranc, 2)));
            Assert.True(FakeDataBuilder.MakeFranc(15).Equals(exchange.Times(fiveFranc, 3)));
        }
コード例 #7
0
        public void Invalid_params_to_Exchange_then_throw_exception()
        {
            //Given
            IExchangeService exchange = new ExchangeService();
            //When
            ArgumentNullException exception =
                Assert.Throws <ArgumentNullException>(() =>
                                                      exchange.Exchange(FakeDataBuilder.MakeDollar(1), null));

            //Then
            Assert.Contains("Exchange must assign Currency", exception.Message);
            ArgumentNullException sourceException = Assert
                                                    .Throws <ArgumentNullException>(() => exchange.Exchange(null, "USD"));

            Assert.Contains("Exchange must be have Money", sourceException.Message);
        }
コード例 #8
0
        public void Sum_Params_contains_diff_money_and_param_To_is_null_then_throw_exception()
        {
            //Given
            IExchangeService exchange = new ExchangeService();
            var Bucks = FakeDataBuilder.MakeDollar(1);
            var Franc = FakeDataBuilder.MakeFranc(10);
            //When
            ArgumentNullException exception =
                Assert.Throws <ArgumentNullException>(() =>
                                                      exchange.Sum(
                                                          null,
                                                          new ICurrencyExpression[] { Bucks, Franc }
                                                          ));

            //Then
            Assert.Contains("addeds contains diff currency,mush be assign currency", exception.Message);
        }
コード例 #9
0
        public void Sum_and_Times_N_and_ExchangeTo_then_return_correct_total()
        {
            //Given
            IExchangeService service = new ExchangeService();
            var tenBucks             = FakeDataBuilder.MakeDollar(10);
            var fiveBucks            = FakeDataBuilder.MakeDollar(5);

            service.AddRate("CHF", "USD", 2);
            //When
            ICurrencyExpression result = service
                                         .Sum(new Money[] { tenBucks, fiveBucks })
                                         .Times(2)
                                         .ExchangeTo("USD");

            //Then
            Assert.Equal(FakeDataBuilder.MakeDollar(30), result);
        }
コード例 #10
0
        public void After_ExchangeTo_currency_then_clean_ExpressionList()
        {
            //Given
            IExchangeService exchange = new ExchangeService();
            var fiveBucks             = FakeDataBuilder.MakeDollar(5);
            var tenFranc = FakeDataBuilder.MakeFranc(10);

            exchange.AddRate("CHF", "USD", 2);
            //When
            ICurrencyExpression sameParamSum = exchange
                                               .Sum(new Money[] { fiveBucks, fiveBucks })
                                               .ExchangeTo("USD");
            int counts = exchange.ExpressionsList.Count();

            //Then
            Assert.Equal(0, counts);
        }
コード例 #11
0
        public void ExchangeTo_then_return_correct_currency()
        {
            //Given
            ExchangeService service = new ExchangeService();

            service.AddRate("CHF", "USD", 2);
            //When
            ICurrencyExpression result = service
                                         .Sum(
                new ICurrencyExpression[]
            {
                FakeDataBuilder.MakeDollar(5),
                FakeDataBuilder.MakeFranc(10)
            }).ExchangeTo("USD");

            //Then
            Assert.Equal(FakeDataBuilder.MakeDollar(10), result);
        }