public static NodaMoney.Money ToNodaMoney(this HighPrecisionMoney money, MidpointRounding midpointRounding = MidpointRounding.ToEven) { var builder = new CurrencyBuilder(money.CurrencyCode, "HighPrecision"); builder.LoadDataFromCurrency(Currency.FromCode(money.CurrencyCode)); builder.DecimalDigits = money.FractionDigits.GetValueOrDefault(); return(new NodaMoney.Money(money.AmountToDecimal(), builder.Build(), midpointRounding)); }
public void WhenRegisterExistingCurrency_ThenThrowExeception() { var builder = new CurrencyBuilder("EUR", "ISO-4217"); var euro = Currency.FromCode("EUR"); builder.LoadDataFromCurrency(euro); Action action = () => builder.Register(); action.Should().Throw <InvalidOperationException>().WithMessage("The custom currency is already registered."); }
public void ConvertToMoney() { var builder = new CurrencyBuilder("EUR", "HighPrecision"); builder.LoadDataFromCurrency(Currency.FromCode("EUR")); builder.DecimalDigits = 4; var nm = new NodaMoney.Money(1234.5678m, builder.Build()); var m = nm.ToCtpMoney(); Assert.IsType <Money>(m); Assert.Equal(123457, m.CentAmount); Assert.Equal("EUR", m.CurrencyCode); }
public void WhenUnregisterIsoCurrency_ThenThisMustSucceed() { var euro = Currency.FromCode("EUR"); // should work CurrencyBuilder.Unregister("EUR", "ISO-4217"); Action action = () => Currency.FromCode("EUR"); action.ShouldThrow <ArgumentException>().WithMessage("*unknown*currency*"); // register again for other unit-tests var builder = new CurrencyBuilder("EUR", "ISO-4217"); builder.LoadDataFromCurrency(euro); builder.Register(); }
public void WhenFromExistingCurrency_ThenThisShouldSucceed() { var builder = new CurrencyBuilder("BTC3", "virtual"); var euro = Currency.FromCode("EUR"); builder.LoadDataFromCurrency(euro); builder.Code.Should().Be("BTC3"); builder.Namespace.Should().Be("virtual"); builder.EnglishName.Should().Be(euro.EnglishName); builder.Symbol.Should().Be(euro.Symbol); builder.ISONumber.Should().Be(euro.Number); builder.DecimalDigits.Should().Be(euro.DecimalDigits); builder.ValidFrom.Should().Be(euro.ValidFrom); builder.ValidTo.Should().Be(euro.ValidTo); }
public void WhenFromExistingCurrency_ThenThisShouldSucceed() { var builder = new CurrencyBuilder("BTC3", "virtual"); var euro = Currency.FromCode("EUR"); builder.LoadDataFromCurrency(euro); builder.Code.Should().Be("BTC3"); builder.Namespace.Should().Be("virtual"); builder.EnglishName.Should().Be(euro.EnglishName); builder.Symbol.Should().Be(euro.Symbol); builder.ISONumber.Should().Be(euro.Number); builder.DecimalDigits.Should().Be(euro.DecimalDigits); builder.IsObsolete.Should().Be(euro.IsObsolete); builder.ValidFrom.Should().Be(euro.ValidFrom); builder.ValidTo.Should().Be(euro.ValidTo); }
public void WhenReplacingEuroWithCustom_ThenThisShouldSucceed() { Currency oldEuro = CurrencyBuilder.Unregister("EUR", "ISO-4217"); var builder = new CurrencyBuilder("EUR", "ISO-4217"); builder.LoadDataFromCurrency(oldEuro); builder.EnglishName = "New Euro"; builder.DecimalDigits = 1; builder.Register(); Currency newEuro = Currency.FromCode("EUR"); newEuro.Symbol.Should().Be("€"); newEuro.EnglishName.Should().Be("New Euro"); newEuro.DecimalDigits.Should().Be(1); }
public void WhenReplacingEuroWithCustom_ThenThisShouldSucceed() { // Panamanian balboa var oldEuro = CurrencyBuilder.Unregister("PAB", "ISO-4217"); var builder = new CurrencyBuilder("PAB", "ISO-4217"); builder.LoadDataFromCurrency(oldEuro); builder.EnglishName = "New Panamanian balboa"; builder.DecimalDigits = 1; builder.Register(); var newEuro = Currency.FromCode("PAB"); newEuro.Symbol.Should().Be("B/."); newEuro.EnglishName.Should().Be("New Panamanian balboa"); newEuro.DecimalDigits.Should().Be(1); }
public void WhenUnregisterIsoCurrency_ThenThisMustSucceed() { var euro = Currency.FromCode("EUR"); // should work CurrencyBuilder.Unregister("EUR", "ISO-4217"); Action action = () => Currency.FromCode("EUR"); action.ShouldThrow<ArgumentException>().WithMessage("*unknown*currency*"); // register again for other unit-tests var builder = new CurrencyBuilder("EUR", "ISO-4217"); builder.LoadDataFromCurrency(euro); builder.Register(); }