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