blob: 712c854653ba16a59b4c8287bdd3764c6a19f0e4 [file] [log] [blame]
package org.unicode.cldr.unittest;
import java.util.Arrays;
import java.util.BitSet;
import java.util.Set;
import org.unicode.cldr.draft.IdentifierInfo;
import org.unicode.cldr.draft.IdentifierInfo.IdentifierStatus;
import com.ibm.icu.dev.test.TestFmwk;
import com.ibm.icu.text.UnicodeSet;
public class TestIdentifierInfo extends TestFmwk {
public static void main(String[] args) {
new TestIdentifierInfo().run(args);
}
public void TestMain() {
String[][] testCases = {
// Format is testString, expected scripts, expected alternates,
// expected numerics (if any)
{ "ab c", "ASCII", "Latn Common" },
{ "a12", "ASCII", "Common Latn", "", "[0]" },
{ "ー", "HIGHLY_RESTRICTIVE", "", "Kana Hira" },
{ "カー", "HIGHLY_RESTRICTIVE", "Kana" },
{ "ーカ", "HIGHLY_RESTRICTIVE", "Kana" },
{ "かー", "HIGHLY_RESTRICTIVE", "Hira" },
{ "ーか", "HIGHLY_RESTRICTIVE", "Hira" },
{ "かーカa", "HIGHLY_RESTRICTIVE", "Kana Hira Latn" },
{ "a、 〃", "HIGHLY_RESTRICTIVE", "Zyyy Latn",
"Bopo Hani Hang Hira Kana" },
{ "a、 〃カ一", "HIGHLY_RESTRICTIVE", "Zyyy Latn Kana Hani" },
{ "a가一", "HIGHLY_RESTRICTIVE", "Hani Hang Latn" },
{ "aㄅ一", "HIGHLY_RESTRICTIVE", "Bopo Hani Latn" },
{ "٢", "HIGHLY_RESTRICTIVE", "", "Arab Thaa", "[٠]" },
{ "٢\u0670", "HIGHLY_RESTRICTIVE", "", "Arab Thaa; Arab Syrc",
"[٠]" },
{ "٢\u0670ـ", "HIGHLY_RESTRICTIVE", "", "Arab Thaa; Arab Syrc",
"[٠]" },
{ "٢\u0670ـ،", "HIGHLY_RESTRICTIVE", "",
"Arab Thaa; Arab Syrc", "[٠]" },
{ "AᎪ", "MINIMALLY_RESTRICTIVE", "Cher Latn" },
{ "aА가一", "MINIMALLY_RESTRICTIVE", "Cyrl Hani Hang Latn" },
{ "AᎪА♥", "MINIMALLY_RESTRICTIVE", "Zyyy Cher Cyrl Latn" },
{ "a1२", "UNRESTRICTIVE", "Zyyy Latn", "Deva Kthi Mahj Dogr", "[0०]" },
{ "a1٢", "UNRESTRICTIVE", "Zyyy Latn", "Arab Thaa", "[0٠]" }, };
IdentifierInfo actualInfo = new IdentifierInfo();
int item = 0;
for (String[] testCase : testCases) {
++item;
final String identifier = testCase[0];
final String actualStatusString = testCase[1];
final String scriptsString = testCase[2];
final String multiscriptsString = testCase.length < 4 ? ""
: testCase[3];
final String numericString = testCase.length < 5 ? "[]"
: testCase[4];
actualInfo.setIdentifier(identifier);
IdentifierStatus actualStatus = actualInfo.getRestrictionLevel();
IdentifierStatus expectedStatus = IdentifierStatus
.valueOf(actualStatusString);
BitSet expectedScripts = IdentifierInfo.parseScripts(scriptsString);
Set<BitSet> expectedMultiscripts = IdentifierInfo
.parseAlternates(multiscriptsString);
UnicodeSet expectedNumerics = new UnicodeSet(numericString);
if (!actualInfo.getScripts().equals(expectedScripts)
|| !actualStatus.equals(expectedStatus)
|| !actualInfo.getAlternates().equals(expectedMultiscripts)
|| !actualInfo.getNumerics().equals(expectedNumerics)) {
errln("(" + item + ") " + Arrays.asList(testCase) + " !="
+ actualInfo);
}
}
}
}