/**
*
*/
package mulCal.currency;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.math.BigDecimal;
import mulCal.settings.Settings;
import org.junit.Ignore;
import org.junit.Test;
/**
* @author james
*
*/
public class CurrencyTest {
/**
* Test method for {@link mulCal.currency.Currency#get(java.lang.String)}.
* @throws Exception
*/
@Test
public void testNoSettings() throws Exception {
Settings setting = new Settings();
Currency currency = new Currency(setting);
assertEquals(currency.get("GBP").toPlainString(), "1.00");
assertEquals(currency.get("MYR").toPlainString(), "4.90");
}
/**
* Test method for {@link mulCal.currency.Currency#get(java.lang.String)}.
* @throws Exception
*/
@Test
public void testGet() throws Exception {
Settings setting = new Settings();
setting.Load("settings.txt");
Currency currency = new Currency(setting);
assertEquals(currency.get("GBP").toPlainString(), "1");
assertEquals(currency.get("MYR").toPlainString(), "50");
}
/**
* Test method for {@link mulCal.currency.Currency#convert(java.math.BigDecimal, java.lang.String, java.lang.String)}.
* @throws Exception
*/
@Test
public void testConvert() throws Exception {
Settings setting = new Settings();
setting.Set("USD", "10.00");
Currency currency = new Currency(setting);
assertEquals(currency.convert(new BigDecimal("1.00"), "GBP", "GBP"), new BigDecimal("1.00"));
assertEquals(currency.convert(new BigDecimal("12.34"), "GBP", "GBP"), new BigDecimal("12.34"));
assertEquals(currency.convert(new BigDecimal("1.00"), "GBP", "MYR"), new BigDecimal("4.900")); // TODO: unexpected extra decimal place.
}
/**
* Test method for {@link mulCal.currency.Currency#convert(java.math.BigDecimal, java.lang.String, java.lang.String)}.
* @throws Exception
*/
@Test
public void testSet() throws Exception {
Settings setting = new Settings();
setting.Set("USD", "10.00");
Currency currency = new Currency(setting);
assertEquals(currency.convert(new BigDecimal("1.00"), "GBP", "USD"), new BigDecimal("10.00"));
}
/**
* Test method for {@link mulCal.currency.Currency#convert(java.math.BigDecimal, java.lang.String, java.lang.String)}.
* @throws Exception
*/
@Test
public void testIrrational() throws Exception {
Settings setting = new Settings();
setting.Set("USD", "3.00");
Currency currency = new Currency(setting);
assertTrue((currency.convert(new BigDecimal("10.00"), "GBP", "USD").doubleValue() - 30.0) < 0.001);
assertTrue((currency.convert(new BigDecimal("10.00"), "USD", "GBP").doubleValue() - 3.333) < 0.001);
}
/**
* Test method for {@link mulCal.currency.Currency#update()}.
* @throws Exception
*/
@Ignore("Best not to piss of XE.com") @Test
public void testUpdate() throws Exception {
Settings setting = new Settings();
setting.Set("USD", "10.00");
Currency currency = new Currency(setting);
currency.update();
assertTrue(currency.get("USD").toPlainString() != "10.00");
System.out.format("USD %s\n", currency.get("USD").toPlainString());
System.out.format("GBP %s\n", currency.get("GBP").toPlainString());
System.out.format("MYR %s\n", currency.get("MYR").toPlainString());
}
/**
* Test method for {@link mulCal.currency.Currency#internetTestConvert(BigDecimal, String, String)}.
* @throws Exception
*/
@Test
public void testOfflineUpdate() throws Exception {
assertEquals(
Currency.internetTestConvert(new BigDecimal("9754.00"), "CAD", "AED"),
new BigDecimal("36509.79"));
}
}