/** * */ package net.frontlinesms.ui.i18n; import net.frontlinesms.junit.BaseTestCase; /** * Unit tests for CurrencyFormatter * @author Alex Anderson | Gonçalo Silva */ public class CurrencyFormatterTest extends BaseTestCase { public void testFormatGbp() { String currencyFormatPattern = "£#,##0.00"; CurrencyFormatter gbpFormatter = new CurrencyFormatter(currencyFormatPattern); assertFormat(gbpFormatter, "£40,123.23", 40123.23); assertFormat(gbpFormatter, "£4.25", 4.25); assertFormat(gbpFormatter, "£0.00", 0); assertFormat(gbpFormatter, "£0.10", 0.10); assertFormat(gbpFormatter, "£123,456.78", 123456.78); assertFormat(gbpFormatter, "£1.00", 1); assertFormat(gbpFormatter, "£10.00", 10); assertFormat(gbpFormatter, "£100.00", 100); assertFormat(gbpFormatter, "£1,000.00", 1000); assertFormat(gbpFormatter, "£10,000.00", 10000); assertFormat(gbpFormatter, "£987,123,456.78", 987123456.78); } public void testFormatJpy() { String currencyFormatPattern = "¥#,###"; CurrencyFormatter jpyFormatter = new CurrencyFormatter(currencyFormatPattern); assertFormat(jpyFormatter, "¥40,123", 40123.23); assertFormat(jpyFormatter, "¥4", 4.25); assertFormat(jpyFormatter, "¥0", 0); assertFormat(jpyFormatter, "¥0", 0.10); assertFormat(jpyFormatter, "¥123,457", 123456.78); assertFormat(jpyFormatter, "¥1", 1); assertFormat(jpyFormatter, "¥10", 10); assertFormat(jpyFormatter, "¥100", 100); assertFormat(jpyFormatter, "¥1,000", 1000); assertFormat(jpyFormatter, "¥10,000", 10000); assertFormat(jpyFormatter, "¥10,000,000", 10000000); assertFormat(jpyFormatter, "¥1,000,000,000,000", 1000000000000d); assertFormat(jpyFormatter, "¥987,123,457", 987123456.78); } public void testFormatHash(){ String currencyFormatPattern = "#"; CurrencyFormatter currencyFormatter = new CurrencyFormatter(currencyFormatPattern); assertFormat(currencyFormatter, "1",1.233); assertFormat(currencyFormatter, "0",0.233); assertFormat(currencyFormatter, "123",123.3); } public void testFormatCurrencySymbolOnRight(){ String currencyFormatPattern = "#,##0.00 €"; CurrencyFormatter currencyFormatter = new CurrencyFormatter(currencyFormatPattern); assertFormat(currencyFormatter, "0.00 €", 0); assertFormat(currencyFormatter, "0.10 €", 0.10); assertFormat(currencyFormatter, "123,456.78 €", 123456.78); assertFormat(currencyFormatter, "1.00 €", 1); } public void testFormatZeros(){ String currencyFormatPattern = "0.00"; CurrencyFormatter currencyFormatter = new CurrencyFormatter(currencyFormatPattern); assertFormat(currencyFormatter, "0.00", 0); assertFormat(currencyFormatter, "0.10", 0.10); assertFormat(currencyFormatter, "123.45", 123.45); } public void testValidCurrencyCodes() { new CurrencyFormatter("GBP"); new CurrencyFormatter("USD"); new CurrencyFormatter("INR"); } public void testInvalidCurrencyCodes() { new CurrencyFormatter("ZZZ"); } private void assertFormat(CurrencyFormatter formatter, String expectedCurrencyString, double input) { String actualCurrencyString = formatter.format(input); assertEquals("Currency format incorrect for " + input, expectedCurrencyString, actualCurrencyString); } }