Skip to content

Commit f604566

Browse files
committed
Fixed #352 and related tests
1 parent 5f285f5 commit f604566

2 files changed

Lines changed: 19 additions & 18 deletions

File tree

moneta-core/src/main/java/org/javamoney/moneta/Money.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ private Money(BigDecimal number, CurrencyUnit currency, MonetaryContext monetary
120120
this.monetaryContext = DEFAULT_MONETARY_CONTEXT;
121121
}
122122
Objects.requireNonNull(number, "Number is required.");
123-
this.number = MoneyUtils.getBigDecimal(number, monetaryContext);
123+
this.number = MoneyUtils.getBigDecimal(number, this.monetaryContext);
124124
}
125125

126126
/**

moneta-core/src/test/java/org/javamoney/moneta/MoneyTest.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,27 @@
4545
public class MoneyTest {
4646
// TODO break this down into smaller test classes, 1.5k LOC seems a bit large;-)
4747

48-
private static final BigDecimal TEN = new BigDecimal(10.0d);
4948
protected static final CurrencyUnit EURO = Monetary.getCurrency("EUR");
5049
protected static final CurrencyUnit DOLLAR = Monetary.getCurrency("USD");
5150
protected static final CurrencyUnit BRAZILIAN_REAL = Monetary.getCurrency("BRL");
51+
private static final BigInteger BI_MAX_LONG = new BigInteger("9223372036854776000");
52+
private static final BigInteger BI_MIN_LONG = new BigInteger("-9223372036854776000");
53+
private static final BigDecimal BD_MAX_DOUBLE = new BigDecimal("1.797693134862316E+308");
5254

5355
/**
5456
* Test method for
5557
* {@link org.javamoney.moneta.Money#of(java.math.BigDecimal, javax.money.CurrencyUnit)} .
5658
*/
5759
@Test
5860
public void testOfCurrencyUnitBigDecimal() {
59-
Money m = Money.of(TEN, Monetary.getCurrency("EUR"));
60-
assertEquals(TEN, m.getNumber().numberValue(BigDecimal.class));
61+
Money m = Money.of(BigDecimal.TEN, Monetary.getCurrency("EUR"));
62+
assertEquals(BigDecimal.TEN, m.getNumber().numberValue(BigDecimal.class));
6163
}
6264

6365
@Test
6466
public void testOfCurrencyUnitDouble() {
6567
Money m = Money.of(10.0d, Monetary.getCurrency("EUR"));
66-
assertEquals(m.getNumber().doubleValue(), TEN.doubleValue());
68+
assertEquals(m.getNumber().doubleValue(), BigDecimal.TEN.doubleValue());
6769
}
6870

6971
/**
@@ -215,8 +217,8 @@ public void testOfCurrencyUnitNumber() {
215217
m = Money.of(BigInteger.valueOf(23232312321432432L), DOLLAR);
216218
assertNotNull(m);
217219
assertEquals(DOLLAR, m.getCurrency());
218-
assertEquals(Long.valueOf(23232312321432432L), m.getNumber().numberValue(Long.class));
219-
assertEquals(BigInteger.valueOf(23232312321432432L), m.getNumber().numberValue(BigInteger.class));
220+
assertEquals(m.getNumber().numberValue(Long.class), Long.valueOf(23232312321432430L));
221+
assertEquals(m.getNumber().numberValue(BigInteger.class), BigInteger.valueOf(23232312321432430L));
220222
}
221223

222224
/**
@@ -310,8 +312,8 @@ public void testOfStringNumber() {
310312
m = Money.of(BigInteger.valueOf(23232312321432432L), "USD");
311313
assertNotNull(m);
312314
assertEquals(DOLLAR, m.getCurrency());
313-
assertEquals(Long.valueOf(23232312321432432L), m.getNumber().numberValue(Long.class));
314-
assertEquals(BigInteger.valueOf(23232312321432432L), m.getNumber().numberValue(BigInteger.class));
315+
assertEquals(m.getNumber().numberValue(Long.class), Long.valueOf(23232312321432430L));
316+
assertEquals(m.getNumber().numberValue(BigInteger.class), BigInteger.valueOf(23232312321432430L));
315317
}
316318

317319
/**
@@ -822,10 +824,9 @@ public void testLongValue() {
822824
m = Money.of(-0.0, "CHF");
823825
assertEquals(0L, m.getNumber().longValue(), "longValue of " + m);
824826
m = Money.of(Long.MAX_VALUE, "CHF");
825-
assertEquals(Long.MAX_VALUE, m.getNumber().longValue(), "longValue of " + m);
827+
assertEquals(m.getNumber().numberValue(BigInteger.class), BI_MAX_LONG, "longValue of " + m);
826828
m = Money.of(Long.MIN_VALUE, "CHF");
827-
assertEquals(Long.MIN_VALUE, m.getNumber().longValue(), "longValue of " + m);
828-
// try {
829+
assertEquals(m.getNumber().numberValue(BigInteger.class), BI_MIN_LONG, "longValue of " + m);
829830
m = Money.of(new BigDecimal("12121762517652176251725178251872652765321876352187635217835378125"), "CHF");
830831
m.getNumber().longValue();
831832
}
@@ -844,9 +845,11 @@ public void testLongValueExact() {
844845
m = Money.of(-0.0, "CHF");
845846
assertEquals(0L, m.getNumber().longValue(), "longValue of " + m);
846847
m = Money.of(Long.MAX_VALUE, "CHF");
847-
assertEquals(Long.MAX_VALUE, m.getNumber().longValue(), "longValue of " + m);
848+
BigInteger bi = m.getNumber().numberValueExact(BigInteger.class);
849+
assertEquals(bi, BI_MAX_LONG, "longValue of " + m);
848850
m = Money.of(Long.MIN_VALUE, "CHF");
849-
assertEquals(Long.MIN_VALUE, m.getNumber().longValue(), "longValue of " + m);
851+
bi = m.getNumber().numberValueExact(BigInteger.class);
852+
assertEquals(bi, BI_MIN_LONG, "longValue of " + m);
850853
try {
851854
m = Money.of(new BigDecimal("12121762517652176251725178251872652765321876352187635217835378125"), "CHF");
852855
m.getNumber().longValueExact();
@@ -888,9 +891,9 @@ public void testDoubleValue() {
888891
m = Money.of(-0.0, "CHF");
889892
assertEquals(0d, m.getNumber().doubleValue(), 0.0d, "doubleValue of " + m);
890893
m = Money.of(Double.MAX_VALUE, "CHF");
891-
assertEquals(Double.MAX_VALUE, m.getNumber().doubleValue(), 0.0d, "doubleValue of " + m);
894+
assertEquals(m.getNumber().numberValue(BigDecimal.class), BD_MAX_DOUBLE, "doubleValue of " + m);
892895
m = Money.of(Double.MIN_VALUE, "CHF");
893-
assertEquals(Double.MIN_VALUE, m.getNumber().doubleValue(), 0.0d, "doubleValue of " + m);
896+
assertEquals(m.getNumber().doubleValue(), Double.MIN_VALUE, 0.0d, "doubleValue of " + m);
894897
// try {
895898
m = Money.of(new BigDecimal("12121762517652176251725178251872652765321876352187635217835378125"), "CHF");
896899
m.getNumber().doubleValue();
@@ -1291,6 +1294,4 @@ public void maxPrecisionOnDivide() {
12911294
assertEquals(quotient.getContext().getPrecision(), 2);
12921295
assertEquals(quotient.getNumber().numberValue(BigDecimal.class).longValueExact(), BigDecimal.valueOf(330).longValueExact());
12931296
}
1294-
1295-
12961297
}

0 commit comments

Comments
 (0)