1 // Copied from ICU4J 57.1
2 /**
3  *******************************************************************************
4  * Copyright (C) 2003-2011, International Business Machines Corporation and
5  * others. All Rights Reserved.
6  *******************************************************************************
7  */
8 package com.ibm.icu.dev.test;
9 
10 import java.util.Calendar;
11 import java.util.Date;
12 import java.util.GregorianCalendar;
13 
14 import com.ibm.icu.util.VersionInfo;
15 
16 public abstract class AbstractTestLog implements TestLog {
17     /**
18      * Returns true if ICU_Version < major.minor.
19      */
isICUVersionBefore(int major, int minor)20     static public boolean isICUVersionBefore(int major, int minor) {
21         return isICUVersionBefore(major, minor, 0);
22     }
23 
24     /**
25      * Returns true if ICU_Version < major.minor.milli.
26      */
isICUVersionBefore(int major, int minor, int milli)27     static public boolean isICUVersionBefore(int major, int minor, int milli) {
28         return VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(major, minor, milli)) < 0;
29     }
30 
31     /**
32      * Returns true if ICU_Version >= major.minor.
33      */
isICUVersionAtLeast(int major, int minor)34     static public boolean isICUVersionAtLeast(int major, int minor) {
35         return isICUVersionAtLeast(major, minor, 0);
36     }
37 
38     /**
39      * Returns true if ICU_Version >= major.minor.milli.
40      */
isICUVersionAtLeast(int major, int minor, int milli)41     static public boolean isICUVersionAtLeast(int major, int minor, int milli) {
42         return !isICUVersionBefore(major, minor, milli);
43     }
44 
45     /**
46      * Add a message.
47      */
log(String message)48     public final void log(String message) {
49         msg(message, LOG, true, false);
50     }
51 
52     /**
53      * Add a message and newline.
54      */
logln(String message)55     public final void logln(String message) {
56         msg(message, LOG, true, true);
57     }
58 
59     /**
60      * Report an error.
61      */
err(String message)62     public final void err(String message) {
63         msg(message, ERR, true, false);
64     }
65 
66     /**
67      * Report an error and newline.
68      */
errln(String message)69     public final void errln(String message) {
70         msg(message, ERR, true, true);
71     }
72 
73     /**
74      * Report a warning (generally missing tests or data).
75      */
warn(String message)76     public final void warn(String message) {
77         msg(message, WARN, true, false);
78     }
79 
80     /**
81      * Report a warning (generally missing tests or data) and newline.
82      */
warnln(String message)83     public final void warnln(String message) {
84         msg(message, WARN, true, true);
85     }
86 
87     /**
88      * Vector for logging.  Callers can force the logging system to
89      * not increment the error or warning level by passing false for incCount.
90      *
91      * @param message the message to output.
92      * @param level the message level, either LOG, WARN, or ERR.
93      * @param incCount if true, increments the warning or error count
94      * @param newln if true, forces a newline after the message
95      */
msg(String message, int level, boolean incCount, boolean newln)96     public abstract void msg(String message, int level, boolean incCount, boolean newln);
97 
98     /**
99      * Not sure if this class is useful.  This lets you log without first testing
100      * if logging is enabled.  The Delegating log will either silently ignore the
101      * message, if the delegate is null, or forward it to the delegate.
102      */
103     public static final class DelegatingLog extends AbstractTestLog {
104         private TestLog delegate;
105 
DelegatingLog(TestLog delegate)106         public DelegatingLog(TestLog delegate) {
107             this.delegate = delegate;
108         }
109 
msg(String message, int level, boolean incCount, boolean newln)110         public void msg(String message, int level, boolean incCount, boolean newln) {
111             if (delegate != null) {
112                 delegate.msg(message, level, incCount, newln);
113             }
114         }
115     }
isDateAtLeast(int year, int month, int day)116     public boolean isDateAtLeast(int year, int month, int day){
117         Date now = new Date();
118         Calendar c = new GregorianCalendar(year, month, day);
119         Date dt = c.getTime();
120         if(now.compareTo(dt)>=0){
121             return true;
122         }
123         return false;
124     }
125 }
126