• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // ##header J2SE15
2 
3 package org.unicode.cldr.unittest;
4 
5 import com.ibm.icu.dev.test.TestFmwk.TestGroup;
6 import com.ibm.icu.text.DateFormat;
7 import com.ibm.icu.text.SimpleDateFormat;
8 import java.io.OutputStream;
9 import java.io.PrintWriter;
10 import java.io.Writer;
11 import java.util.Date;
12 import org.unicode.cldr.util.CLDRConfig;
13 
14 /** Top level test used to run all other tests as a batch. */
15 public class TestAll extends TestGroup {
16 
17     private static interface FormattableDate {
format(Date d)18         String format(Date d);
19     }
20 
21     /**
22      * NullObject, to suppress Timestamp printing
23      *
24      * @author ribnitz
25      */
26     private static class NullFormatableDate implements FormattableDate {
27 
28         @Override
format(@uppressWarnings"unused") Date d)29         public String format(@SuppressWarnings("unused") Date d) {
30             return null;
31         }
32     }
33 
34     /**
35      * Simplistic approach at formatting a Date (using Date and Time)
36      *
37      * @author ribnitz
38      */
39     private static class SimpleFormattableDate implements FormattableDate {
40         private final DateFormat df;
41 
SimpleFormattableDate()42         public SimpleFormattableDate() {
43             df = new SimpleDateFormat("y-MM-d HH:mm:ss");
44         }
45 
46         @Override
format(Date d)47         public String format(Date d) {
48             return " << " + df.format(d) + " >>";
49         }
50     }
51 
52     /**
53      * Class putting a timestamp at the end of each line output
54      *
55      * @author ribnitz
56      */
57     private static class TimeStampingPrintWriter extends PrintWriter {
58         protected FormattableDate df = new SimpleFormattableDate();
59 
TimeStampingPrintWriter(Writer out, boolean autoFlush)60         public TimeStampingPrintWriter(Writer out, boolean autoFlush) {
61             super(out, autoFlush);
62         }
63 
TimeStampingPrintWriter(Writer out)64         public TimeStampingPrintWriter(Writer out) {
65             super(out);
66             // TODO Auto-generated constructor stub
67         }
68 
TimeStampingPrintWriter(OutputStream out, boolean autoFlush)69         public TimeStampingPrintWriter(OutputStream out, boolean autoFlush) {
70             super(out, autoFlush);
71             // TODO Auto-generated constructor stub
72         }
73 
TimeStampingPrintWriter(OutputStream out)74         public TimeStampingPrintWriter(OutputStream out) {
75             super(out);
76             // TODO Auto-generated constructor stub
77         }
78 
setFormatableDate(FormattableDate aDate)79         public void setFormatableDate(FormattableDate aDate) {
80             df = aDate;
81         }
82 
getFormattedDateString()83         private String getFormattedDateString() {
84             return df.format(new Date());
85         }
86 
87         @Override
write(String s)88         public void write(String s) {
89             if (s.equals("\n") || s.equals("\r\n")) {
90                 String ss = getFormattedDateString();
91                 if (ss != null) {
92                     super.write(" " + ss + s);
93                 } else {
94                     super.write(s);
95                 }
96             } else {
97                 super.write(s);
98             }
99         }
100     }
101 
102     /**
103      * Helper class to convert milliseconds into hours/minuy
104      *
105      * @author ribnitz
106      */
107     private static class DateDisplayBean {
108         public final int hours;
109         public final int minutes;
110         public final int seconds;
111         public final int millis;
112 
DateDisplayBean(long ms)113         public DateDisplayBean(long ms) {
114             long m = ms;
115             hours = (int) (m / (60 * 60 * 1000));
116             if (hours > 0) {
117                 m -= (hours * 60 * 60 * 1000);
118             }
119             minutes = (int) (m / (60 * 1000));
120             if (minutes > 0) {
121                 m -= minutes * 60 * 1000;
122             }
123             seconds = (int) (m / 1000);
124             millis = (int) (m - (seconds * 1000));
125         }
126 
127         @Override
toString()128         public String toString() {
129             StringBuilder sb = new StringBuilder();
130             if (hours > 0) {
131                 sb.append(hours);
132                 sb.append(hours > 1 ? " hours " : " hour ");
133             }
134             if (minutes > 0) {
135                 sb.append(minutes);
136                 sb.append(minutes > 1 ? " minutes " : " minute ");
137             }
138             if (seconds > 0) {
139                 sb.append(seconds);
140                 sb.append(seconds > 1 ? " seconds " : " second ");
141             }
142             if (millis > 0) {
143                 sb.append(millis);
144                 sb.append(millis > 1 ? " milliseconds" : " millisecond");
145             }
146             return sb.toString();
147         }
148     }
149 
main(String[] args)150     public static void main(String[] args) {
151         int errCount = runTests(args);
152         if (errCount != 0) {
153             System.exit(1);
154         }
155     }
156 
157     /** Run all tests, but do not System.exit at the end. */
runTests(String[] args)158     public static int runTests(String[] args) {
159         final boolean doTimeStamps = false;
160         TimeStampingPrintWriter tspw = new TimeStampingPrintWriter(System.out);
161         if (!doTimeStamps) {
162             tspw.setFormatableDate(new NullFormatableDate());
163         }
164         long startTime = System.currentTimeMillis();
165         int errCount = CLDRConfig.getInstance().setTestLog(new TestAll()).run(args, tspw);
166         long endTime = System.currentTimeMillis();
167         DateDisplayBean dispBean = new DateDisplayBean(endTime - startTime);
168         StringBuffer sb = new StringBuffer();
169         sb.append("Tests took ");
170         sb.append(dispBean.toString());
171         System.out.println(sb.toString());
172         return errCount;
173     }
174 
TestAll()175     public TestAll() {
176         super(
177                 new String[] {
178                     "org.unicode.cldr.unittest.LocaleMatcherTest",
179                     "org.unicode.cldr.unittest.GenerateTransformTest",
180                     "org.unicode.cldr.unittest.LanguageInfoTest",
181                     "org.unicode.cldr.unittest.LanguageTest",
182                     "org.unicode.cldr.unittest.LikelySubtagsTest",
183                     "org.unicode.cldr.unittest.NumberingSystemsTest",
184                     "org.unicode.cldr.unittest.StandardCodesTest",
185                     "org.unicode.cldr.unittest.TestAnnotations",
186                     "org.unicode.cldr.unittest.TestAttributeValues",
187                     "org.unicode.cldr.unittest.TestBasic",
188                     "org.unicode.cldr.unittest.TestCLDRFile",
189                     "org.unicode.cldr.unittest.TestCLDRUtils",
190                     "org.unicode.cldr.unittest.TestCanonicalIds",
191                     "org.unicode.cldr.unittest.TestCasingInfo",
192                     "org.unicode.cldr.unittest.TestCheckAltOnly",
193                     "org.unicode.cldr.unittest.TestCheckCLDR",
194                     "org.unicode.cldr.unittest.TestComparisonBuilder",
195                     "org.unicode.cldr.unittest.TestCoverageLevel",
196                     "org.unicode.cldr.unittest.TestDTDAttributes",
197                     "org.unicode.cldr.unittest.TestDisplayAndInputProcessor",
198                     "org.unicode.cldr.unittest.TestExampleGenerator",
199                     "org.unicode.cldr.unittest.TestExternalCodeAPIs",
200                     "org.unicode.cldr.unittest.TestFallbackIterator",
201                     "org.unicode.cldr.unittest.TestIdentifierInfo",
202                     "org.unicode.cldr.unittest.TestIdentity",
203                     "org.unicode.cldr.unittest.TestInheritance",
204                     "org.unicode.cldr.unittest.TestKeyboardModifierSet",
205                     "org.unicode.cldr.unittest.TestLdml2ICU",
206                     "org.unicode.cldr.unittest.TestLocalCurrency",
207                     "org.unicode.cldr.unittest.TestLocale",
208                     "org.unicode.cldr.unittest.TestLruMap",
209                     "org.unicode.cldr.unittest.TestMetadata",
210                     "org.unicode.cldr.unittest.TestOutdatedPaths",
211                     "org.unicode.cldr.unittest.TestPathHeader",
212                     "org.unicode.cldr.unittest.TestPaths",
213                     "org.unicode.cldr.unittest.TestPseudolocalization",
214                     "org.unicode.cldr.unittest.TestScriptMetadata",
215                     "org.unicode.cldr.unittest.TestSupplementalInfo",
216                     "org.unicode.cldr.unittest.TestTransforms",
217                     "org.unicode.cldr.unittest.TestHelper",
218                     "org.unicode.cldr.unittest.TestCLDRLocaleCoverage",
219                     "org.unicode.cldr.unittest.TestDayPeriods",
220                     "org.unicode.cldr.unittest.TestSubdivisions",
221                     "org.unicode.cldr.unittest.TestAliases",
222                     "org.unicode.cldr.unittest.TestValidity",
223                     "org.unicode.cldr.unittest.TestDtdData",
224                     "org.unicode.cldr.unittest.TestCldrFactory",
225                     "org.unicode.cldr.unittest.TestUnContainment",
226                     "org.unicode.cldr.unittest.TestUnits",
227                     "org.unicode.cldr.unittest.TestNumbers",
228                     "org.unicode.cldr.unittest.TestLocaleCanonicalizer",
229                     "org.unicode.cldr.unittest.TestPersonNameFormatter",
230                     "org.unicode.cldr.unittest.TestCompactNumbers",
231                     "org.unicode.cldr.unittest.TestPathLookup",
232                     "org.unicode.cldr.unittest.TestDataTest",
233                     //            "org.unicode.cldr.unittest.TestCollators" See Ticket #8288
234                     "org.unicode.cldr.api.AllTests",
235                 },
236                 "All tests in CLDR");
237     }
238 
239     public static final String CLASS_TARGET_NAME = "CLDR";
240 }
241