Search in sources :

Example 1 with CurrencyInfo

use of android.icu.text.CurrencyMetaInfo.CurrencyInfo in project j2objc by google.

the class CurrencyTest method testCurrencyMetaInfoRangesWithLongs.

@Test
public void testCurrencyMetaInfoRangesWithLongs() {
    CurrencyMetaInfo metainfo = CurrencyMetaInfo.getInstance(true);
    assertNotNull("have metainfo", metainfo);
    // must be capitalized
    CurrencyFilter filter = CurrencyFilter.onRegion("DE");
    List<CurrencyInfo> currenciesInGermany = metainfo.currencyInfo(filter);
    // must be capitalized
    CurrencyFilter filter_br = CurrencyFilter.onRegion("BR");
    List<CurrencyInfo> currenciesInBrazil = metainfo.currencyInfo(filter_br);
    logln("currencies Germany: " + currenciesInGermany.size());
    logln("currencies Brazil: " + currenciesInBrazil.size());
    long demFirstDate = Long.MIN_VALUE;
    long demLastDate = Long.MAX_VALUE;
    long eurFirstDate = Long.MIN_VALUE;
    CurrencyInfo demInfo = null;
    for (CurrencyInfo info : currenciesInGermany) {
        logln(info.toString());
        if (info.code.equals("DEM")) {
            demInfo = info;
            demFirstDate = info.from;
            demLastDate = info.to;
        } else if (info.code.equals("EUR")) {
            eurFirstDate = info.from;
        }
    }
    // the Euro and Deutschmark overlapped for several years
    assertEquals("DEM available at last date", 2, metainfo.currencyInfo(filter.withDate(demLastDate)).size());
    // demLastDate + 1 millisecond is not the start of the last day, we consider it the next day, so...
    long demLastDatePlus1ms = demLastDate + 1;
    assertEquals("DEM not available after very start of last date", 1, metainfo.currencyInfo(filter.withDate(demLastDatePlus1ms)).size());
    // both available for start of euro
    assertEquals("EUR available on start of first date", 2, metainfo.currencyInfo(filter.withDate(eurFirstDate)).size());
    // but not one millisecond before the start of the first day
    long eurFirstDateMinus1ms = eurFirstDate - 1;
    assertEquals("EUR not avilable before very start of first date", 1, metainfo.currencyInfo(filter.withDate(eurFirstDateMinus1ms)).size());
    // Deutschmark available from first millisecond on
    assertEquals("Millisecond of DEM Big Bang", 1, metainfo.currencyInfo(CurrencyFilter.onDate(demFirstDate).withRegion("DE")).size());
    assertEquals("From Deutschmark to Euro", 2, metainfo.currencyInfo(CurrencyFilter.onDateRange(demFirstDate, eurFirstDate).withRegion("DE")).size());
    assertEquals("all Tender for Brazil", 7, metainfo.currencyInfo(CurrencyFilter.onTender().withRegion("BR")).size());
    assertTrue("No legal tender", demInfo.isTender());
}
Also used : CurrencyMetaInfo(android.icu.text.CurrencyMetaInfo) CurrencyInfo(android.icu.text.CurrencyMetaInfo.CurrencyInfo) CurrencyFilter(android.icu.text.CurrencyMetaInfo.CurrencyFilter) Test(org.junit.Test)

Example 2 with CurrencyInfo

use of android.icu.text.CurrencyMetaInfo.CurrencyInfo in project j2objc by google.

the class CurrencyTest method testCurrencyMetaInfoRanges.

// A real test of CurrencyMetaInfo.
@Test
public void testCurrencyMetaInfoRanges() {
    CurrencyMetaInfo metainfo = CurrencyMetaInfo.getInstance(true);
    assertNotNull("have metainfo", metainfo);
    // must be capitalized
    CurrencyFilter filter = CurrencyFilter.onRegion("DE");
    List<CurrencyInfo> currenciesInGermany = metainfo.currencyInfo(filter);
    logln("currencies: " + currenciesInGermany.size());
    DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");
    fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date demLastDate = new Date(Long.MAX_VALUE);
    Date eurFirstDate = new Date(Long.MIN_VALUE);
    for (CurrencyInfo info : currenciesInGermany) {
        logln(info.toString());
        logln("from: " + fmt.format(info.from) + Long.toHexString(info.from));
        logln("  to: " + fmt.format(info.to) + Long.toHexString(info.to));
        if (info.code.equals("DEM")) {
            demLastDate = new Date(info.to);
        } else if (info.code.equals("EUR")) {
            eurFirstDate = new Date(info.from);
        }
    }
    // the Euro and Deutschmark overlapped for several years
    assertEquals("DEM available at last date", 2, metainfo.currencyInfo(filter.withDate(demLastDate)).size());
    // demLastDate + 1 millisecond is not the start of the last day, we consider it the next day, so...
    Date demLastDatePlus1ms = new Date(demLastDate.getTime() + 1);
    assertEquals("DEM not available after very start of last date", 1, metainfo.currencyInfo(filter.withDate(demLastDatePlus1ms)).size());
    // both available for start of euro
    assertEquals("EUR available on start of first date", 2, metainfo.currencyInfo(filter.withDate(eurFirstDate)).size());
    // but not one millisecond before the start of the first day
    Date eurFirstDateMinus1ms = new Date(eurFirstDate.getTime() - 1);
    assertEquals("EUR not avilable before very start of first date", 1, metainfo.currencyInfo(filter.withDate(eurFirstDateMinus1ms)).size());
    // end time is last millisecond of day
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTimeZone(TimeZone.getTimeZone("GMT"));
    cal.setTime(demLastDate);
    assertEquals("hour is 23", 23, cal.get(GregorianCalendar.HOUR_OF_DAY));
    assertEquals("minute is 59", 59, cal.get(GregorianCalendar.MINUTE));
    assertEquals("second is 59", 59, cal.get(GregorianCalendar.SECOND));
    assertEquals("millisecond is 999", 999, cal.get(GregorianCalendar.MILLISECOND));
    // start time is first millisecond of day
    cal.setTime(eurFirstDate);
    assertEquals("hour is 0", 0, cal.get(GregorianCalendar.HOUR_OF_DAY));
    assertEquals("minute is 0", 0, cal.get(GregorianCalendar.MINUTE));
    assertEquals("second is 0", 0, cal.get(GregorianCalendar.SECOND));
    assertEquals("millisecond is 0", 0, cal.get(GregorianCalendar.MILLISECOND));
}
Also used : CurrencyMetaInfo(android.icu.text.CurrencyMetaInfo) DateFormat(android.icu.text.DateFormat) SimpleDateFormat(android.icu.text.SimpleDateFormat) GregorianCalendar(android.icu.util.GregorianCalendar) SimpleDateFormat(android.icu.text.SimpleDateFormat) CurrencyInfo(android.icu.text.CurrencyMetaInfo.CurrencyInfo) Date(java.util.Date) CurrencyFilter(android.icu.text.CurrencyMetaInfo.CurrencyFilter) Test(org.junit.Test)

Example 3 with CurrencyInfo

use of android.icu.text.CurrencyMetaInfo.CurrencyInfo in project j2objc by google.

the class CurrencyTest method TestCurrencyMetaInfo.

// Coverage-only test of the CurrencyMetaInfo class
@Test
public void TestCurrencyMetaInfo() {
    CurrencyMetaInfo metainfo = CurrencyMetaInfo.getInstance();
    if (metainfo == null) {
        errln("Unable to get CurrencyMetaInfo instance.");
        return;
    }
    if (!CurrencyMetaInfo.hasData()) {
        errln("hasData() should note return false.");
        return;
    }
    CurrencyMetaInfo.CurrencyFilter filter;
    CurrencyMetaInfo.CurrencyInfo info;
    CurrencyMetaInfo.CurrencyDigits digits;
    {
        // CurrencyFilter
        filter = CurrencyMetaInfo.CurrencyFilter.onCurrency("currency");
        CurrencyMetaInfo.CurrencyFilter filter2 = CurrencyMetaInfo.CurrencyFilter.onCurrency("test");
        if (filter == null) {
            errln("Unable to create CurrencyFilter.");
            return;
        }
        if (filter.equals(new Object())) {
            errln("filter should not equal to Object");
            return;
        }
        if (filter.equals(filter2)) {
            errln("filter should not equal filter2");
            return;
        }
        if (filter.hashCode() == 0) {
            errln("Error getting filter hashcode");
            return;
        }
        if (filter.toString() == null) {
            errln("Error calling toString()");
            return;
        }
    }
    {
        // CurrencyInfo
        info = new CurrencyMetaInfo.CurrencyInfo("region", "code", 0, 1, 1, false);
        if (info == null) {
            errln("Error creating CurrencyInfo.");
            return;
        }
        if (info.toString() == null) {
            errln("Error calling toString()");
            return;
        }
    }
    {
        // CurrencyDigits
        digits = metainfo.currencyDigits("isoCode");
        if (digits == null) {
            errln("Unable to get CurrencyDigits.");
            return;
        }
        if (digits.toString() == null) {
            errln("Error calling toString()");
            return;
        }
    }
}
Also used : CurrencyMetaInfo(android.icu.text.CurrencyMetaInfo) CurrencyInfo(android.icu.text.CurrencyMetaInfo.CurrencyInfo) CurrencyFilter(android.icu.text.CurrencyMetaInfo.CurrencyFilter) CurrencyInfo(android.icu.text.CurrencyMetaInfo.CurrencyInfo) CurrencyFilter(android.icu.text.CurrencyMetaInfo.CurrencyFilter) Test(org.junit.Test)

Aggregations

CurrencyMetaInfo (android.icu.text.CurrencyMetaInfo)3 CurrencyFilter (android.icu.text.CurrencyMetaInfo.CurrencyFilter)3 CurrencyInfo (android.icu.text.CurrencyMetaInfo.CurrencyInfo)3 Test (org.junit.Test)3 DateFormat (android.icu.text.DateFormat)1 SimpleDateFormat (android.icu.text.SimpleDateFormat)1 GregorianCalendar (android.icu.util.GregorianCalendar)1 Date (java.util.Date)1