blob: fcad5b38f4e7273014d8352f91abd431111e036e [file] [log] [blame]
package org.unicode.cldr.unittest;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Map.Entry;
import java.util.Set;
import org.unicode.cldr.util.CLDRConfig;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.google.common.collect.TreeMultimap;
import com.ibm.icu.dev.test.TestFmwk;
import com.ibm.icu.util.ICUUncheckedIOException;
public class TestLdml2IcuCompleteness extends TestFmwk{
private static final String CLDR_BASE = CLDRConfig.getInstance().getCldrBaseDirectory() + "/common";
private static final String ICU_BASE = CLDRConfig.getInstance().getCldrBaseDirectory() + "/../icu4c/data/"; // "/Users/markdavis/workspace/icu4c/data";
static Multimap<String,File> icuFiles = TreeMultimap.create();
static Multimap<String,File> cldrFiles = TreeMultimap.create();
static Set<String> SKIP_DIRS = ImmutableSet.of(
"transforms", "translit", // temp
"unidata",
"sprep",
"mappings");
static Set<String> SKIP_FILES = ImmutableSet.of(
"attributeValueValidity",
"tzdbNames");
static {
fillMap(new File(ICU_BASE), ".txt", icuFiles);
// for (Entry<String, Collection<File>> s : icuFiles.asMap().entrySet()) {
// System.out.println(s.getKey() + "\t\t" + s.getValue());
// }
fillMap(new File(CLDR_BASE), ".xml", cldrFiles);
for (Entry<String, Collection<File>> s : cldrFiles.asMap().entrySet()) {
System.out.println(s.getKey() + "\t\t" + s.getValue());
}
}
static void fillMap(File file, String suffix, Multimap<String, File> fileList) {
try {
for (File f : file.listFiles()) {
String name = f.getName();
if (f.isDirectory()) {
if (SKIP_DIRS.contains(name)) {
continue;
}
fillMap(f, suffix, fileList);
} else {
if (!name.endsWith(suffix)) {
continue;
}
// hack
if (name.endsWith("dict.txt") || name.contains("readme")) {
continue;
}
name = name.substring(0, name.length()-suffix.length());
if (SKIP_FILES.contains(name)) {
continue;
}
fileList.put(name, f.getParentFile().getCanonicalFile());
}
}
} catch (IOException e) {
throw new ICUUncheckedIOException(e);
}
}
public static void main(String[] args) {
new TestLdml2IcuCompleteness().run(args);
}
public void TestFiles() {
verifySuperset("cldrFiles-icuFiles", cldrFiles.keySet(), icuFiles.keySet());
verifySuperset("icuFiles-cldrFiles", icuFiles.keySet(), cldrFiles.keySet());
}
private void verifySuperset(String title, Set<String> set1, Set<String> set2) {
LinkedHashSet<String> diff = new LinkedHashSet<>(set1);
diff.removeAll(set2);
assertEquals(title, Collections.EMPTY_SET, diff);
}
public void TestLocales() {
for (Entry<String, Collection<File>> entry : cldrFiles.asMap().entrySet()) {
String file = entry.getKey();
Set<String> values = collectCldrValues(file, entry.getValue());
}
}
// TODO flesh out
private Set<String> collectCldrValues(String file, Collection<File> value) {
for (File f : value) {
//org.unicode.cldr.util.XMLFileReader.loadPathValues(filename, data, validating)
}
return null;
}
}