2 *******************************************************************************
\r
3 * Copyright (C) 2003-2009, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.test;
\r
9 import java.util.Calendar;
\r
10 import java.util.Date;
\r
11 import java.util.GregorianCalendar;
\r
13 import com.ibm.icu.util.VersionInfo;
\r
15 public abstract class AbstractTestLog implements TestLog {
\r
17 public static boolean dontSkipForVersion = false;
\r
18 public boolean skipIfBeforeICU(int major, int minor, int micro) {
\r
19 if (dontSkipForVersion || VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(major, minor, micro)) > 0) {
\r
22 logln("Test skipped before ICU release " + major + "." + minor);
\r
30 public final void log(String message) {
\r
31 msg(message, LOG, true, false);
\r
35 * Add a message and newline.
\r
37 public final void logln(String message) {
\r
38 msg(message, LOG, true, true);
\r
44 public final void err(String message) {
\r
45 msg(message, ERR, true, false);
\r
49 * Report an error and newline.
\r
51 public final void errln(String message) {
\r
52 msg(message, ERR, true, true);
\r
56 * Report a warning (generally missing tests or data).
\r
58 public final void warn(String message) {
\r
59 msg(message, WARN, true, false);
\r
63 * Report a warning (generally missing tests or data) and newline.
\r
65 public final void warnln(String message) {
\r
66 msg(message, WARN, true, true);
\r
70 * Vector for logging. Callers can force the logging system to
\r
71 * not increment the error or warning level by passing false for incCount.
\r
73 * @param message the message to output.
\r
74 * @param level the message level, either LOG, WARN, or ERR.
\r
75 * @param incCount if true, increments the warning or error count
\r
76 * @param newln if true, forces a newline after the message
\r
78 public abstract void msg(String message, int level, boolean incCount, boolean newln);
\r
81 * Not sure if this class is useful. This lets you log without first testing
\r
82 * if logging is enabled. The Delegating log will either silently ignore the
\r
83 * message, if the delegate is null, or forward it to the delegate.
\r
85 public static final class DelegatingLog extends AbstractTestLog {
\r
86 private TestLog delegate;
\r
88 public DelegatingLog(TestLog delegate) {
\r
89 this.delegate = delegate;
\r
92 public void msg(String message, int level, boolean incCount, boolean newln) {
\r
93 if (delegate != null) {
\r
94 delegate.msg(message, level, incCount, newln);
\r
98 public boolean isDateAtLeast(int year, int month, int day){
\r
99 Date now = new Date();
\r
100 Calendar c = new GregorianCalendar(year, month, day);
\r
101 Date dt = c.getTime();
\r
102 if(now.compareTo(dt)>=0){
\r