/*
* Copyright LGPL3
* YES Technology Association
* http://yestech.org
*
* http://www.opensource.org/licenses/lgpl-3.0.html
*/
/*
*
* Author: Artie Copeland
* Last Modified Date: $DateTime: $
*/
package org.yestech.lib.currency;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.Locale;
import static org.junit.Assert.assertEquals;
/**
* @author Artie Copeland
* @version $Revision: $
*/
public class CurrencyUtilsUnitTest {
@Test(expected = CurrencyException.class)
public void testAddNullLeftSide() {
CurrencyUtils.add(null, new Money(BigDecimal.ONE));
}
@Test(expected = CurrencyException.class)
public void testAddNullRightSide() {
CurrencyUtils.add(new Money(BigDecimal.ONE), null);
}
@Test(expected = CurrencyException.class)
public void testAddMismatchCurrency() {
CurrencyUtils.add(new Money(BigDecimal.ONE), new Money(BigDecimal.ONE, Locale.UK));
}
@Test
public void testAddition() {
Money money = new Money(new BigDecimal("2"));
Money resultMoney = CurrencyUtils.add(new Money(BigDecimal.ONE), new Money(BigDecimal.ONE));
assertEquals(money, resultMoney);
assertEquals("$", resultMoney.getCurreny().getSymbol());
}
@Test
public void testSubtrction() {
Money resultMoney = CurrencyUtils.subtract(new Money(BigDecimal.ONE), new Money(BigDecimal.ONE));
assertEquals(new Money(BigDecimal.ZERO), resultMoney);
assertEquals("$", resultMoney.getCurreny().getSymbol());
}
@Test
public void testMultiply() {
Money resultMoney = CurrencyUtils.multiple(new Money(BigDecimal.TEN), new Money(BigDecimal.ONE));
assertEquals(new Money(BigDecimal.TEN), resultMoney);
assertEquals("$", resultMoney.getCurreny().getSymbol());
}
@Test
public void testDivide() {
Money money = new Money(new BigDecimal("1"));
Money resultMoney = CurrencyUtils.divide(new Money(BigDecimal.ONE), new Money(BigDecimal.ONE));
assertEquals(money, resultMoney);
assertEquals("$", resultMoney.getCurreny().getSymbol());
}
@Test(expected = CurrencyException.class)
public void testDivideByZero() {
CurrencyUtils.divide(new Money(BigDecimal.ONE), new Money(BigDecimal.ZERO));
}
@Test(expected = CurrencyException.class)
public void testDivideByZeroWithRound() {
CurrencyUtils.divide(new Money(BigDecimal.ONE), new Money(BigDecimal.ZERO), BigDecimal.ROUND_UP);
}
@Test
public void testDivideWithRound() {
Money money = new Money(new BigDecimal("0.85"));
Money resultMoney = CurrencyUtils.divide(new Money(new BigDecimal("1.70")), new Money(new BigDecimal("2.00")), BigDecimal.ROUND_UP);
assertEquals(money, resultMoney);
assertEquals("$", resultMoney.getCurreny().getSymbol());
}
}