1 package org.unicode.cldr.unittest;
2 
3 import java.util.Collection;
4 import java.util.Map;
5 import java.util.Map.Entry;
6 import java.util.TreeMap;
7 
8 import org.unicode.cldr.test.OutdatedPaths;
9 import org.unicode.cldr.tool.CldrVersion;
10 import org.unicode.cldr.util.CLDRConfig;
11 import org.unicode.cldr.util.CLDRFile;
12 import org.unicode.cldr.util.PathHeader;
13 
14 import com.google.common.collect.Multimap;
15 import com.google.common.collect.TreeMultimap;
16 
17 public class TestOutdatedPaths extends TestFmwkPlus {
18 
19     static CLDRConfig testInfo = CLDRConfig.getInstance();
20 
main(String[] args)21     public static void main(String[] args) {
22         new TestOutdatedPaths().run(args);
23     }
24 
25     OutdatedPaths outdatedPaths = new OutdatedPaths();
26 
TestBirths()27     public void TestBirths() {
28         Multimap<CldrVersion, String> birthToPaths = TreeMultimap.create();
29         for (String path : testInfo.getEnglish()) {
30             CldrVersion birth = outdatedPaths.getEnglishBirth(path);
31             if (birth == null) birth = CldrVersion.unknown;
32             birthToPaths.put(birth, path);
33         }
34         int accum = 0;
35         for (Entry<CldrVersion, Collection<String>> entry : birthToPaths.asMap().entrySet()) {
36             int size = entry.getValue().size();
37             accum += size;
38             logln(entry.getKey() + "\t" + size + "\t" + accum);
39         }
40     }
41 
TestBasic()42     public void TestBasic() {
43         assertEquals("English should have none", 0,
44             outdatedPaths.countOutdated("en"));
45 
46         // Update the number when GenerateBirth is rerun.
47 
48         assertTrue("French should have at least one",
49             outdatedPaths.countOutdated("fr") > 10);
50 
51         // If this path is not outdated, find another one
52 
53         // assertTrue(
54         // "Test one path known to be outdated. Use TestShow -v to find a path, and verify that it is outdated",
55         // outdatedPaths
56         // .isOutdated(
57         // "fr",
58         // "//ldml/dates/fields/field[@type=\"week\"]/relative[@type=\"-1\"]"));
59     }
60 
61     // use for debugging, and also just to make sure cycle works.
TestShow()62     public void TestShow() {
63         PathHeader.Factory pathHeaders = PathHeader.getFactory();
64         // checkShow(pathHeaders, "fr");
65         checkShow(pathHeaders, "de");
66     }
67 
checkShow(PathHeader.Factory pathHeaders, String locale)68     private void checkShow(PathHeader.Factory pathHeaders, String locale) {
69         CLDRFile cldrFile = testInfo.getMainAndAnnotationsFactory().make(locale, true);
70 
71         Map<PathHeader, String> sorted = new TreeMap<PathHeader, String>();
72         logln(locale + " total outdated:\t" + outdatedPaths.countOutdated(locale));
73         for (String spath : cldrFile) {
74             if (outdatedPaths.isOutdated(locale, spath)) {
75                 sorted.put(pathHeaders.fromPath(spath), "");
76             }
77         }
78         for (Entry<PathHeader, String> entry : sorted.entrySet()) {
79             PathHeader p = entry.getKey();
80             String originalPath = p.getOriginalPath();
81             logln("English (" + outdatedPaths.getEnglishBirth(originalPath) + "):\\t"
82                 + "«" + outdatedPaths.getPreviousEnglish(originalPath) + "»"
83                 + "\t⇒\\t"
84                 + "«" + CLDRConfig.getInstance().getEnglish().getStringValue(originalPath) + "»"
85                 + "\tNative: «" + cldrFile.getStringValue(originalPath) //
86                 + "»\tPath: " + p.toString() //
87                 + "\tXML-Path: " + originalPath);
88         }
89     }
90 
91 }
92