killbill-uncached

invoice: fix rounding errors in tests Signed-off-by: Pierre-Alexandre

8/13/2012 3:35:59 PM

Details

diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/user/TestDefaultInvoiceUserApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
index ee3e5a4..39ee3ec 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/user/TestDefaultInvoiceUserApi.java
@@ -206,8 +206,7 @@ public class TestDefaultInvoiceUserApi extends InvoiceApiTestBase {
         // Verify the adjusted invoice balance
         final BigDecimal adjustedInvoiceBalance = invoiceUserApi.getInvoice(invoiceId).getBalance();
         // Note! The invoice code will round (see InvoiceItemList)
-        Assert.assertEquals(adjustedInvoiceBalance, invoiceBalance.add(creditAmount.negate()).setScale(InvoicingConfiguration.getNumberOfDecimals(),
-                                                                                                       InvoicingConfiguration.getRoundingMode()));
+        verifyAdjustedInvoiceBalance(invoiceBalance, creditAmount, adjustedInvoiceBalance);
 
         // Verify the adjusted account balance
         final BigDecimal adjustedAccountBalance = invoiceUserApi.getAccountBalance(accountId);
@@ -251,8 +250,7 @@ public class TestDefaultInvoiceUserApi extends InvoiceApiTestBase {
         // Verify the adjusted invoice balance
         final BigDecimal adjustedInvoiceBalance = invoiceUserApi.getInvoice(invoiceId).getBalance();
         // Note! The invoice code will round (see InvoiceItemList)
-        Assert.assertEquals(adjustedInvoiceBalance, invoiceBalance.add(invoiceItem.getAmount().negate()).setScale(InvoicingConfiguration.getNumberOfDecimals(),
-                                                                                                                  InvoicingConfiguration.getRoundingMode()));
+        verifyAdjustedInvoiceBalance(invoiceBalance, invoiceItem.getAmount(), adjustedInvoiceBalance);
 
         // Verify the adjusted account balance
         final BigDecimal adjustedAccountBalance = invoiceUserApi.getAccountBalance(accountId);
@@ -288,8 +286,7 @@ public class TestDefaultInvoiceUserApi extends InvoiceApiTestBase {
         // Verify the adjusted invoice balance
         final BigDecimal adjustedInvoiceBalance = invoiceUserApi.getInvoice(invoiceId).getBalance();
         // Note! The invoice code will round (see InvoiceItemList)
-        Assert.assertEquals(adjustedInvoiceBalance, invoiceBalance.add(adjAmount.negate()).setScale(InvoicingConfiguration.getNumberOfDecimals(),
-                                                                                                    InvoicingConfiguration.getRoundingMode()));
+        verifyAdjustedInvoiceBalance(invoiceBalance, adjAmount, adjustedInvoiceBalance);
 
         // Verify the adjusted account balance
         final BigDecimal adjustedAccountBalance = invoiceUserApi.getAccountBalance(accountId);
@@ -308,4 +305,11 @@ public class TestDefaultInvoiceUserApi extends InvoiceApiTestBase {
             Assert.assertEquals(e.getCode(), ErrorCode.INVOICE_ITEM_ADJUSTMENT_AMOUNT_INVALID.getCode());
         }
     }
+
+    private void verifyAdjustedInvoiceBalance(final BigDecimal invoiceBalance, final BigDecimal adjAmount, final BigDecimal adjustedInvoiceBalance) {
+        Assert.assertEquals(adjustedInvoiceBalance.compareTo(invoiceBalance.add(adjAmount.negate().setScale(InvoicingConfiguration.getNumberOfDecimals(),
+                                                                                                            InvoicingConfiguration.getRoundingMode()))
+                                                                           .setScale(InvoicingConfiguration.getNumberOfDecimals(),
+                                                                                     InvoicingConfiguration.getRoundingMode())), 0);
+    }
 }