MessageUtilTest.java
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/
package org.aspectj.testing.util;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.ISourceLocation;
import org.aspectj.bridge.Message;
import org.aspectj.bridge.MessageHandler;
import org.aspectj.bridge.MessageUtil;
import org.aspectj.bridge.SourceLocation;
import junit.framework.TestCase;
/**
*
*/
public class MessageUtilTest extends TestCase {
public MessageUtilTest(String s) {
super(s);
}
MessageHandler samples;
List /* Exception */ exceptions;
List /*ISourceLocation*/ locations;
List /*String */ messageTexts;
public void testMessageRendering() {
MessageHandler messages = getSampleMessages();
System.out.println("testMessageRendering(): run manually evaluate by inspection");
PrintStream oldOut = System.out;
// comment to inspect manually
System.setOut(NullPrintStream.NULL_PrintStream);
try {
MessageUtil.print(System.out, messages, "all label -> ", MessageUtil.MESSAGE_LABEL, MessageUtil.PICK_ALL);
MessageUtil.print(System.out, messages, "info short -> ", MessageUtil.MESSAGE_SHORT, MessageUtil.PICK_INFO);
MessageUtil.print(System.out, messages, "fail line -> ", MessageUtil.MESSAGE_LINE, MessageUtil.PICK_FAIL);
MessageUtil.print(System.out, messages, "debug wide line -> ", MessageUtil.MESSAGE_WIDELINE, MessageUtil.PICK_DEBUG);
MessageUtil.print(System.out, messages, "warn no-loc label -> ", MessageUtil.MESSAGE_LABEL_NOLOC, MessageUtil.PICK_WARNING);
MessageUtil.print(System.out, messages, "abort force-loc line -> ", MessageUtil.MESSAGE_LINE_FORCE_LOC, MessageUtil.PICK_ABORT);
MessageUtil.print(System.out, messages, "info+ short -> ", MessageUtil.MESSAGE_SHORT, MessageUtil.PICK_INFO_PLUS);
MessageUtil.print(System.out, messages, "fail+ line -> ", MessageUtil.MESSAGE_LINE, MessageUtil.PICK_FAIL_PLUS);
MessageUtil.print(System.out, messages, "debug+ wide line -> ", MessageUtil.MESSAGE_WIDELINE, MessageUtil.PICK_DEBUG_PLUS);
MessageUtil.print(System.out, messages, "warn+ no-loc label -> ", MessageUtil.MESSAGE_LABEL_NOLOC, MessageUtil.PICK_WARNING_PLUS);
MessageUtil.print(System.out, messages, "abort+ force-loc line -> ", MessageUtil.MESSAGE_LINE_FORCE_LOC, MessageUtil.PICK_ABORT_PLUS);
} finally {
System.setOut(oldOut);
}
}
List getSampleMessageTexts() {
if (null == messageTexts) {
List result = new ArrayList(Arrays.asList(new String[]
{"one", "two", "now is the time for all good men..."}));
messageTexts = result;
}
return messageTexts;
}
List getSampleExceptions() {
if (null == exceptions) {
List result = new ArrayList();
int i = 1;
result.add(new Error("Error " + i++));
result.add(new RuntimeException("RuntimeException " + i++));
result.add(new IOException("IOException " + i++));
exceptions = result;
}
return exceptions;
}
List getSampleLocations() {
if (null == locations) {
List result = new ArrayList();
File file = new File("testsrc/org/aspectj/testing/util/MessageUtilTest.java");
result.add(new SourceLocation(file, 1, 2, 1));
result.add(new SourceLocation(file, 100, 100, 0));
locations = result;
}
return locations;
}
MessageHandler getSampleMessages() {
MessageHandler result = new MessageHandler();
for (IMessage.Kind kind : IMessage.KINDS) {
for (Object item : getSampleLocations()) {
ISourceLocation sourceLoc = (ISourceLocation) item;
for (Object value : getSampleMessageTexts()) {
String text = (String) value;
for (Object o : getSampleExceptions()) {
Throwable thrown = (Throwable) o;
result.handleMessage(new Message(text, kind, thrown, sourceLoc));
}
result.handleMessage(new Message(text, kind, null, sourceLoc));
}
result.handleMessage(new Message("", kind, null, sourceLoc));
}
result.handleMessage(new Message("", kind, null, null));
}
return result;
}
}