blob: 74d25bd0220693d31515a2be22a6c32584d120e5 [file] [log] [blame]
//##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