//##header //#if defined(FOUNDATION10) || defined(J2SE13) //#else /* ******************************************************************************* * Copyright (C) 2008-2009, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* */ package com.ibm.icu.dev.test.collator; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import com.ibm.icu.dev.test.TestFmwk; import com.ibm.icu.text.Collator; import com.ibm.icu.text.IndexCharacters; import com.ibm.icu.util.ULocale; /** * @author markdavis * */ public class IndexCharactersTest extends TestFmwk { public static void main(String[] args) throws Exception{ new IndexCharactersTest().run(args); } public void TestBasics() { ULocale[] list = ULocale.getAvailableLocales(); // get keywords combinations // don't bother with multiple combinations at this poin List keywords = new ArrayList(); keywords.add(""); String[] collationValues = Collator.getKeywordValues("collation"); for (int j = 0; j < collationValues.length; ++j) { keywords.add("@collation=" + collationValues[j]); } for (int i = 0; i < list.length; ++i) { for (Iterator it = keywords.iterator(); it.hasNext();) { String collationValue = (String) it.next(); ULocale locale = new ULocale(list[i].toString() + collationValue); if (collationValue.length() > 0 && !Collator.getFunctionalEquivalent("collation", locale).equals(locale)) { //logln("Skipping " + locale); continue; } if (locale.getCountry().length() != 0) { continue; } IndexCharacters indexCharacters = new IndexCharacters(locale); final Collection mainChars = indexCharacters.getIndexCharacters(); String mainCharString = mainChars.toString(); if (mainCharString.length() > 500) { mainCharString = mainCharString.substring(0,500) + "..."; } logln(mainChars.size() + "\t" + locale + "\t" + locale.getDisplayName(ULocale.ENGLISH)); logln("Index:\t" + mainCharString); if (mainChars.size() > 100) { errln("Index character set too large"); } showIfNotEmpty("A sequence sorting the same is already present", indexCharacters.getAlreadyIn()); showIfNotEmpty("A sequence sorts the same as components", indexCharacters.getNoDistinctSorting()); showIfNotEmpty("A sequence has only Marks or Nonalphabetics", indexCharacters.getNotAlphabetic()); } } } private void showIfNotEmpty(String title, List alreadyIn) { if (alreadyIn.size() != 0) { logln("\t" + title + ":\t" + alreadyIn); } } private void showIfNotEmpty(String title, Map alreadyIn) { if (alreadyIn.size() != 0) { logln("\t" + title + ":\t" + alreadyIn); } } } //#endif