package spec.concordion.results.exception;
import java.util.ArrayList;
import java.util.List;
import org.concordion.api.Element;
import org.concordion.integration.junit3.ConcordionTestCase;
import org.concordion.internal.command.ThrowableCaughtEvent;
import org.concordion.internal.listener.ThrowableRenderer;
import test.concordion.TestRig;
public class ExceptionTest extends ConcordionTestCase {
private List<StackTraceElement> stackTraceElements = new ArrayList<StackTraceElement>();
public void addStackTraceElement(String declaringClassName, String methodName, String filename, int lineNumber) {
if (filename.equals("null")) {
filename = null;
}
stackTraceElements.add(new StackTraceElement(declaringClassName, methodName, filename, lineNumber));
}
public String markAsException(String fragment, String expression, String errorMessage) {
Throwable t = new Throwable(errorMessage);
t.setStackTrace(stackTraceElements.toArray(new StackTraceElement[0]));
Element element = new Element((nu.xom.Element) new TestRig()
.processFragment(fragment)
.getXOMDocument()
.query("//p")
.get(0));
new ThrowableRenderer().throwableCaught(new ThrowableCaughtEvent(t, element, expression));
return element.toXML();
}
}