Search in sources :

Example 76 with CurrencyUnit

use of javax.money.CurrencyUnit in project jsr354-ri by JavaMoney.

the class ExtractorMinorPartOperatorTest method shouldReturnPositiveValue.

@Test
public void shouldReturnPositiveValue() {
    CurrencyUnit currency = Monetary.getCurrency("EUR");
    MonetaryAmount money = Money.parse("EUR 2.35");
    MonetaryAmount result = operator.apply(money);
    assertEquals(result.getCurrency(), currency);
    assertEquals(result.getNumber().doubleValue(), 0.35);
}
Also used : CurrencyUnit(javax.money.CurrencyUnit) MonetaryAmount(javax.money.MonetaryAmount) Test(org.testng.annotations.Test)

Example 77 with CurrencyUnit

use of javax.money.CurrencyUnit in project jsr354-ri by JavaMoney.

the class ExtractorMinorPartOperatorTest method shouldReturnNegativeValue.

@Test
public void shouldReturnNegativeValue() {
    CurrencyUnit currency = Monetary.getCurrency("BHD");
    MonetaryAmount money = Money.parse("BHD -1.345");
    MonetaryAmount result = operator.apply(money);
    assertEquals(result.getCurrency(), currency);
    assertEquals(result.getNumber().doubleValue(), -0.345);
}
Also used : CurrencyUnit(javax.money.CurrencyUnit) MonetaryAmount(javax.money.MonetaryAmount) Test(org.testng.annotations.Test)

Example 78 with CurrencyUnit

use of javax.money.CurrencyUnit in project jsr354-ri by JavaMoney.

the class MonetaryOperatorsTest method shouldRoudingUsingScale.

@Test
public void shouldRoudingUsingScale() {
    CurrencyUnit euro = Monetary.getCurrency("EUR");
    MonetaryAmount money = Money.parse("EUR 2.355432");
    MonetaryAmount result = MonetaryOperators.rounding(4).apply(money);
    assertNotNull(result);
    assertEquals(result.getCurrency(), euro);
    assertEquals(Double.valueOf(2.3554), result.getNumber().doubleValue());
}
Also used : CurrencyUnit(javax.money.CurrencyUnit) MonetaryAmount(javax.money.MonetaryAmount) Test(org.testng.annotations.Test)

Example 79 with CurrencyUnit

use of javax.money.CurrencyUnit in project jsr354-ri by JavaMoney.

the class CurrencyToken method parse.

/**
 * Parses a currency from the given {@link ParseContext}. Depending on the
 * current {@link CurrencyStyle} it interprets the next non empty token,
 * either as
 * <ul>
 * <li>currency code
 * <li>currency symbol
 * </ul>
 * Parsing of localized currency names or numeric code is not supported.
 *
 * @throws UnsupportedOperationException if the {@link CurrencyStyle} is configured to us currency
 *                                       names, or numeric codes for formatting.
 */
@Override
public void parse(ParseContext context) throws MonetaryParseException {
    String token = context.lookupNextToken();
    while (Objects.nonNull(token)) {
        if (token.trim().isEmpty()) {
            context.consume(token);
            token = context.lookupNextToken();
            continue;
        }
        break;
    }
    if (token == null) {
        throw new MonetaryException("Error parsing CurrencyUnit: no input.");
    }
    try {
        CurrencyUnit cur;
        switch(style) {
            case CODE:
                if (!Monetary.isCurrencyAvailable(token)) {
                    // Perhaps blank is missing between currency code and number...
                    String subCurrency = parseCurrencyCode(token);
                    cur = Monetary.getCurrency(subCurrency);
                    context.consume(subCurrency);
                } else {
                    cur = Monetary.getCurrency(token);
                    context.consume(token);
                }
                break;
            case SYMBOL:
                if (token.startsWith("$")) {
                    throw new MonetaryParseException("$ is not a unique currency symbol.", token, context.getErrorIndex());
                } else if (token.startsWith("€")) {
                    cur = Monetary.getCurrency("EUR");
                    context.consume("€");
                } else if (token.startsWith("£")) {
                    cur = Monetary.getCurrency("GBP");
                    context.consume("£");
                } else {
                    cur = Monetary.getCurrency(token);
                    context.consume(token);
                }
                context.setParsedCurrency(cur);
                break;
            case NAME:
            case NUMERIC_CODE:
            default:
                throw new UnsupportedOperationException("Not yet implemented");
        }
        if (Objects.nonNull(cur)) {
            context.setParsedCurrency(cur);
        }
    } catch (Exception e) {
        throw new MonetaryException("Error parsing CurrencyUnit.", e);
    }
}
Also used : CurrencyUnit(javax.money.CurrencyUnit) MonetaryParseException(javax.money.format.MonetaryParseException) MonetaryException(javax.money.MonetaryException) IOException(java.io.IOException) MonetaryParseException(javax.money.format.MonetaryParseException) MonetaryException(javax.money.MonetaryException)

Example 80 with CurrencyUnit

use of javax.money.CurrencyUnit in project jsr354-ri by JavaMoney.

the class CurrenciesTest method testCurrencyValues.

/**
 * Test method for
 * {@link javax.money.Monetary#getCurrency(java.lang.String, String...)} .
 */
@Test
public void testCurrencyValues() {
    Currency jdkCurrency = Currency.getInstance("CHF");
    CurrencyUnit cur = Monetary.getCurrency("CHF");
    assertNotNull(cur);
    assertEquals(jdkCurrency.getCurrencyCode(), cur.getCurrencyCode());
    assertEquals(jdkCurrency.getNumericCode(), cur.getNumericCode());
    assertEquals(jdkCurrency.getDefaultFractionDigits(), cur.getDefaultFractionDigits());
}
Also used : CurrencyUnit(javax.money.CurrencyUnit) Currency(java.util.Currency) Test(org.testng.annotations.Test)

Aggregations

CurrencyUnit (javax.money.CurrencyUnit)116 Test (org.testng.annotations.Test)78 MonetaryAmount (javax.money.MonetaryAmount)57 BigDecimal (java.math.BigDecimal)14 Currency (java.util.Currency)8 MonetaryException (javax.money.MonetaryException)6 ExchangeRate (javax.money.convert.ExchangeRate)6 RoundedMoney (org.javamoney.moneta.RoundedMoney)6 IOException (java.io.IOException)5 MathContext (java.math.MathContext)5 MonetaryParseException (javax.money.format.MonetaryParseException)5 Money (org.javamoney.moneta.Money)4 ExchangeRateBuilder (org.javamoney.moneta.convert.ExchangeRateBuilder)3 DefaultNumberValue (org.javamoney.moneta.spi.DefaultNumberValue)3 Test (org.junit.Test)3 BufferedReader (java.io.BufferedReader)2 InputStreamReader (java.io.InputStreamReader)2 LocalDate (java.time.LocalDate)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2