Skip to content

Commit

Permalink
Parsen von Eurozeichen verbessert
Browse files Browse the repository at this point in the history
  • Loading branch information
oboehm committed Feb 9, 2019
1 parent 7dafd1c commit 680e9ac
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
6 changes: 1 addition & 5 deletions src/main/java/de/jfachwert/bank/Geldbetrag.java
Expand Up @@ -236,11 +236,7 @@ public static Geldbetrag valueOf(String other) {
try {
return DEFAULT_FORMATTER.parse(other);
} catch (MonetaryParseException ex) {
if (other.endsWith("\u20AC")) {
return valueOf(other.substring(0, other.length() - 1) + " EUR");
} else {
throw new IllegalArgumentException(other, ex);
}
throw new IllegalArgumentException(other, ex);
}
}

Expand Down
10 changes: 9 additions & 1 deletion src/main/java/de/jfachwert/bank/Waehrung.java
Expand Up @@ -123,14 +123,22 @@ public static Currency toCurrency(String name) {
}
}
}
throw new IllegalArgumentException("cannot get currency for '" + name + "'", iae);
return toFallbackCurrency(name, iae);
}
}

private static boolean matchesCurrency(String name, Currency c) {
return name.equalsIgnoreCase(c.getCurrencyCode()) || name.equalsIgnoreCase(c.getSymbol());
}

private static Currency toFallbackCurrency(String name, IllegalArgumentException iae) {
if (name.equals("\u20ac")) {
return Currency.getInstance("EUR");
} else {
throw new IllegalArgumentException("cannot get currency for '" + name + "'", iae);
}
}

/**
* Validiert den uebergebenen Waehrungscode.
*
Expand Down
5 changes: 5 additions & 0 deletions src/test/java/de/jfachwert/bank/GeldbetragFormatterTest.java
Expand Up @@ -44,6 +44,11 @@ public void testParse() {
assertEquals(Geldbetrag.of(100, "CHF"), parsed);
}

@Test
public void testParseEurozeichen() {
assertEquals(formatter.parse("11 EUR"), formatter.parse("11\u20ac"));
}

@Test
public void testParseCurrencyNumber() {
Geldbetrag parsed = formatter.parse("BRL 123.45");
Expand Down
5 changes: 5 additions & 0 deletions src/test/java/de/jfachwert/bank/GeldbetragTest.java
Expand Up @@ -544,4 +544,9 @@ public void testValidate() {
}
}

@Test
public void testValueOf() {
assertEquals(Geldbetrag.of("11 EUR"), Geldbetrag.of("11\u20ac"));
}

}

0 comments on commit 680e9ac

Please sign in to comment.