001: /**
002: *******************************************************************************
003: * Copyright (C) 2003-2006, International Business Machines Corporation and *
004: * others. All Rights Reserved. *
005: *******************************************************************************
006: */package com.ibm.icu.dev.test;
007:
008: import com.ibm.icu.util.VersionInfo;
009:
010: public abstract class AbstractTestLog implements TestLog {
011:
012: public static boolean dontSkipForVersion = false;
013:
014: public boolean skipIfBeforeICU(int major, int minor) {
015: if (dontSkipForVersion
016: || VersionInfo.ICU_VERSION.compareTo(VersionInfo
017: .getInstance(major, minor)) > 0) {
018: return false;
019: }
020: logln("Test skipped before ICU release " + major + "." + minor);
021: return true;
022: }
023:
024: public boolean isICUVersionAtLeast(int major, int minor) {
025: return (VersionInfo.ICU_VERSION.compareTo(VersionInfo
026: .getInstance(major, minor)) >= 0);
027: }
028:
029: /**
030: * Add a message.
031: */
032: public final void log(String message) {
033: msg(message, LOG, true, false);
034: }
035:
036: /**
037: * Add a message and newline.
038: */
039: public final void logln(String message) {
040: msg(message, LOG, true, true);
041: }
042:
043: /**
044: * Report an error.
045: */
046: public final void err(String message) {
047: msg(message, ERR, true, false);
048: }
049:
050: /**
051: * Report an error and newline.
052: */
053: public final void errln(String message) {
054: msg(message, ERR, true, true);
055: }
056:
057: /**
058: * Report a warning (generally missing tests or data).
059: */
060: public final void warn(String message) {
061: msg(message, WARN, true, false);
062: }
063:
064: /**
065: * Report a warning (generally missing tests or data) and newline.
066: */
067: public final void warnln(String message) {
068: msg(message, WARN, true, true);
069: }
070:
071: /**
072: * Vector for logging. Callers can force the logging system to
073: * not increment the error or warning level by passing false for incCount.
074: *
075: * @param message the message to output.
076: * @param level the message level, either LOG, WARN, or ERR.
077: * @param incCount if true, increments the warning or error count
078: * @param newln if true, forces a newline after the message
079: */
080: public abstract void msg(String message, int level,
081: boolean incCount, boolean newln);
082:
083: /**
084: * Not sure if this class is useful. This lets you log without first testing
085: * if logging is enabled. The Delegating log will either silently ignore the
086: * message, if the delegate is null, or forward it to the delegate.
087: */
088: public static final class DelegatingLog extends AbstractTestLog {
089: private TestLog delegate;
090:
091: public DelegatingLog(TestLog delegate) {
092: this .delegate = delegate;
093: }
094:
095: public void msg(String message, int level, boolean incCount,
096: boolean newln) {
097: if (delegate != null) {
098: delegate.msg(message, level, incCount, newln);
099: }
100: }
101: }
102: }
|