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(Date d)34 public String format(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 toString()137 public String toString() { 138 StringBuilder sb = new StringBuilder(); 139 if (hours > 0) { 140 sb.append(hours); 141 sb.append(hours > 1 ? " hours " : " hour "); 142 } 143 if (minutes > 0) { 144 sb.append(minutes); 145 sb.append(minutes > 1 ? " minutes " : " minute "); 146 } 147 if (seconds > 0) { 148 sb.append(seconds); 149 sb.append(seconds > 1 ? " seconds " : " second "); 150 } 151 if (millis > 0) { 152 sb.append(millis); 153 sb.append(millis > 1 ? " milliseconds" : " millisecond"); 154 } 155 return sb.toString(); 156 } 157 } 158 main(String[] args)159 public static void main(String[] args) { 160 final boolean doTimeStamps = false; 161 TimeStampingPrintWriter tspw = new TimeStampingPrintWriter(System.out); 162 if (!doTimeStamps) { 163 tspw.setFormatableDate(new NullFormatableDate()); 164 } 165 long startTime = System.currentTimeMillis(); 166 int errCount = CLDRConfig.getInstance().setTestLog(new TestAll()) 167 .run(args, tspw); 168 long endTime = System.currentTimeMillis(); 169 DateDisplayBean dispBean = new DateDisplayBean(endTime - startTime); 170 StringBuffer sb = new StringBuffer(); 171 sb.append("Tests took "); 172 sb.append(dispBean.toString()); 173 System.out.println(sb.toString()); 174 if (errCount != 0) { 175 System.exit(1); 176 } 177 } 178 TestAll()179 public TestAll() { 180 super(new String[] { 181 "org.unicode.cldr.unittest.LocaleMatcherTest", 182 "org.unicode.cldr.unittest.GenerateTransformTest", 183 "org.unicode.cldr.unittest.LanguageInfoTest", 184 "org.unicode.cldr.unittest.LanguageTest", 185 "org.unicode.cldr.unittest.LikelySubtagsTest", 186 "org.unicode.cldr.unittest.NumberingSystemsTest", 187 "org.unicode.cldr.unittest.StandardCodesTest", 188 "org.unicode.cldr.unittest.TestAnnotations", 189 "org.unicode.cldr.unittest.TestBasic", 190 "org.unicode.cldr.unittest.TestCLDRFile", 191 "org.unicode.cldr.unittest.TestCLDRUtils", 192 "org.unicode.cldr.unittest.TestCanonicalIds", 193 "org.unicode.cldr.unittest.TestCasingInfo", 194 "org.unicode.cldr.unittest.TestCheckCLDR", 195 "org.unicode.cldr.unittest.TestComparisonBuilder", 196 "org.unicode.cldr.unittest.TestCoverageLevel", 197 "org.unicode.cldr.unittest.TestDTDAttributes", 198 "org.unicode.cldr.unittest.TestDisplayAndInputProcessor", 199 "org.unicode.cldr.unittest.TestExampleGenerator", 200 "org.unicode.cldr.unittest.TestExternalCodeAPIs", 201 "org.unicode.cldr.unittest.TestFallbackIterator", 202 "org.unicode.cldr.unittest.TestIdentifierInfo", 203 "org.unicode.cldr.unittest.TestIdentity", 204 "org.unicode.cldr.unittest.TestInheritance", 205 "org.unicode.cldr.unittest.TestKeyboardModifierSet", 206 "org.unicode.cldr.unittest.TestLdml2ICU", 207 "org.unicode.cldr.unittest.TestLocalCurrency", 208 "org.unicode.cldr.unittest.TestLocale", 209 "org.unicode.cldr.unittest.TestLruMap", 210 "org.unicode.cldr.unittest.TestMetadata", 211 "org.unicode.cldr.unittest.TestOutdatedPaths", 212 "org.unicode.cldr.unittest.TestPathHeader", 213 "org.unicode.cldr.unittest.TestPaths", 214 "org.unicode.cldr.unittest.TestPseudolocalization", 215 "org.unicode.cldr.unittest.TestScriptMetadata", 216 "org.unicode.cldr.unittest.TestSupplementalInfo", 217 "org.unicode.cldr.unittest.TestTransforms", 218 "org.unicode.cldr.unittest.TestUtilities", 219 "org.unicode.cldr.unittest.TestCLDRLocaleCoverage", 220 "org.unicode.cldr.unittest.TestDayPeriods", 221 "org.unicode.cldr.unittest.TestSubdivisions", 222 "org.unicode.cldr.unittest.TestAliases", 223 "org.unicode.cldr.unittest.TestValidity", 224 "org.unicode.cldr.unittest.TestDtdData", 225 "org.unicode.cldr.unittest.TestCldrFactory", 226 "org.unicode.cldr.unittest.TestUnContainment", 227 // "org.unicode.cldr.unittest.TestCollators" See Ticket #8288 228 }, 229 "All tests in CLDR"); 230 } 231 232 public static final String CLASS_TARGET_NAME = "CLDR"; 233 } 234