package net.objectlab.kit.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.math.BigDecimal; import org.junit.Test; public class TotalTest { @Test public void testSum() { final Total sum = new Total(); assertEquals("scale", 0, sum.getTotal().scale()); BigDecimalAssert.assertSameValue("ctor", BigDecimal.ZERO, sum.getTotal()); } @Test public void testSumInt() { final Total sum = new Total(BigDecimal.ZERO, 2); assertEquals("scale", 2, sum.getTotal().scale()); BigDecimalAssert.assertSameValue("ctor", BigDecimal.ZERO, sum.getTotal()); } // @Test public void testSumBigDecimal() { final Total sum = new Total(BigDecimal.TEN); assertEquals("scale", 2, sum.getTotal().scale()); BigDecimalAssert.assertSameValue("ctor", BigDecimal.TEN, sum.getTotal()); final Total sum2 = new Total(BigDecimal.TEN.setScale(4)); assertEquals("scale", 4, sum2.getTotal().scale()); BigDecimalAssert.assertSameValue("ctor", BigDecimal.TEN, sum2.getTotal()); } @Test public void testSumBigDecimalInt() { final Total sum = new Total(BigDecimal.TEN, 4); assertEquals("scale", 4, sum.getTotal().scale()); BigDecimalAssert.assertSameValue("ctor", BigDecimal.TEN, sum.getTotal()); } @Test public void testgetTotal() { final Total sum = new Total(BigDecimal.TEN, 4); BigDecimalAssert.assertSameValue("ctor", BigDecimal.TEN, sum.getTotal()); } @Test public void testAdd() { final Total sum = new Total(); sum.add((BigDecimal[]) null); BigDecimalAssert.assertSameValue("add null", BigDecimal.ZERO, sum.getTotal()); sum.add(BigDecimal.ZERO); BigDecimalAssert.assertSameValue("add 0", BigDecimal.ZERO, sum.getTotal()); sum.add(BigDecimal.ONE).add(BigDecimal.ONE); BigDecimalAssert.assertSameValue("add 1 + 1", new BigDecimal("2"), sum.getTotal()); sum.add(BigDecimal.ONE.negate()); BigDecimalAssert.assertSameValue("add -1", new BigDecimal("1"), sum.getTotal()); sum.add(BigDecimal.TEN.negate()); BigDecimalAssert.assertSameValue("add -10", new BigDecimal("-9"), sum.getTotal()); sum.add(BigDecimal.ONE, BigDecimal.ONE, null, BigDecimal.TEN); BigDecimalAssert.assertSameValue("add 1 1 null 10", new BigDecimal("3"), sum.getTotal()); } @Test public void testSubtract() { final Total sum = new Total(); sum.subtract((BigDecimal[]) null); BigDecimalAssert.assertSameValue("subtract null", BigDecimal.ZERO, sum.getTotal()); sum.subtract(BigDecimal.ZERO); BigDecimalAssert.assertSameValue("subtract 0", BigDecimal.ZERO, sum.getTotal()); sum.subtract(BigDecimal.ONE).subtract(BigDecimal.ONE); BigDecimalAssert.assertSameValue("subtract 1 + 1", new BigDecimal("-2"), sum.getTotal()); sum.subtract(BigDecimal.ONE.negate()); BigDecimalAssert.assertSameValue("subtract -1", new BigDecimal("-1"), sum.getTotal()); sum.subtract(BigDecimal.TEN.negate()); BigDecimalAssert.assertSameValue("subtract -10", new BigDecimal("9"), sum.getTotal()); sum.subtract(BigDecimal.ONE, BigDecimal.ONE, null, BigDecimal.TEN); BigDecimalAssert.assertSameValue("subtract 1 1 null 10", new BigDecimal("-3"), sum.getTotal()); } @Test public void testToString() { final Total sum = new Total(BigDecimal.TEN, 4); assertEquals("4 dp", "10.0000", sum.toString()); final Total sum2 = new Total(); assertEquals("0 dp", "0", sum2.toString()); } @Test public void testIsZero() { final Total sum = new Total(BigDecimal.TEN, 4); assertFalse("10", sum.isZero()); final Total sum2 = new Total(); assertTrue("0", sum2.isZero()); final Total sum3 = new Total(BigDecimal.ZERO, 0); assertTrue("0", sum3.isZero()); final Total sum4 = new Total(new BigDecimal("0.0")); assertTrue("0", sum4.isZero()); final Total sum5 = new Total(new BigDecimal("0.0"), 0); assertTrue("0", sum5.isZero()); } }