package com.jcwhatever.nucleus.providers.economy; import com.jcwhatever.nucleus.providers.economy.ICurrency.CurrencyNoun; import com.jcwhatever.nucleus.utils.PreCon; import com.jcwhatever.nucleus.utils.text.TextUtils; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @Ignore public class ICurrencyTest { private ICurrency _currency; public ICurrencyTest(ICurrency currency) { _currency = currency; } public void run() throws Exception { testFormat(); testGetCurrencyName(); testGetConversionFactor(); testConvert(); } @Test public void testFormat() throws Exception { String result = _currency.format(10); Assert.assertNotNull(result); Assert.assertFalse(result.isEmpty()); } @Test public void testGetCurrencyName() throws Exception { String result = _currency.getName(CurrencyNoun.SINGULAR); Assert.assertNotNull(result); result = _currency.getName(CurrencyNoun.SINGULAR); Assert.assertNotNull(result); } @Test public void testGetConversionFactor() throws Exception { // should not throw any exceptions _currency.getConversionFactor(); } @Test public void testConvert() throws Exception { ICurrency other = createDummyCurrency(2.0D); double result = _currency.convert(10, other); Assert.assertEquals(5 * _currency.getConversionFactor(), result, 0.0D); } public static ICurrency createDummyCurrency(final double factor) { return new ICurrency() { @Override public String format(double amount) { String template = "{0} Dollar"; return TextUtils.format(template, amount).toString(); } @Override public String getName(CurrencyNoun noun) { PreCon.notNull(noun); switch (noun) { case SINGULAR: return "Dollar"; case PLURAL: return "Dollars"; default: throw new AssertionError(); } } @Override public double getConversionFactor() { return factor; } @Override public double convert(double amount, ICurrency currency) { double base = amount / currency.getConversionFactor(); return base * factor; } }; } }