/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2013, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.core.helpers;
import static junit.framework.Assert.assertEquals;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import ch.qos.logback.core.CoreConstants;
public class ThrowableToStringArrayTest {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
public void verify(Throwable t) {
t.printStackTrace(pw);
String[] sa = ThrowableToStringArray.convert(t);
StringBuilder sb = new StringBuilder();
for (String tdp : sa) {
sb.append(tdp);
sb.append(CoreConstants.LINE_SEPARATOR);
}
String expected = sw.toString();
String result = sb.toString().replace("common frames omitted", "more");
assertEquals(expected, result);
}
@Test
public void smoke() {
Exception e = new Exception("smoke");
verify(e);
}
@Test
public void nested() {
Exception w = null;
try {
someMethod();
} catch (Exception e) {
w = new Exception("wrapping", e);
}
verify(w);
}
@Test
public void multiNested() {
Exception w = null;
try {
someOtherMethod();
} catch (Exception e) {
w = new Exception("wrapping", e);
}
verify(w);
}
void someMethod() throws Exception {
throw new Exception("someMethod");
}
void someOtherMethod() throws Exception {
try {
someMethod();
} catch (Exception e) {
throw new Exception("someOtherMethod", e);
}
}
}