package org.marketcetera.util.ws.wrappers; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.SystemUtils; import org.junit.Test; import org.marketcetera.util.file.CloseableRegistry; import org.marketcetera.util.test.TestCaseBase; import static org.junit.Assert.*; import static org.marketcetera.util.test.EqualityAssert.*; /** * @author tlerios@marketcetera.com * @since 1.0.0 * @version $Id: RemoteProxyExceptionTest.java 16154 2012-07-14 16:34:05Z colin $ */ /* $License$ */ public class RemoteProxyExceptionTest extends TestCaseBase { private static final String TEST_MESSAGE= "testMessage"; private static final String[] TEST_TRACE= new String[] {"testTrace"}; private static final String TEST_TRACE_PRINT= "testTrace"+SystemUtils.LINE_SEPARATOR; private static final String TEST_STRING= "testString"; private static final String TEST_CLASS= "testClass"; private static String getStackTraceNoArg (RemoteProxyException ex) { PrintStream stdErrSave=System.err; CloseableRegistry r=new CloseableRegistry(); ByteArrayOutputStream byteArray=new ByteArrayOutputStream(); try { r.register(byteArray); PrintStream stdErr=new PrintStream(byteArray); r.register(stdErr); System.setErr(stdErr); ex.printStackTrace(); } finally { System.setErr(stdErrSave); r.close(); } return new String(byteArray.toByteArray()); } private static String getStackTraceStream (RemoteProxyException ex) { CloseableRegistry r=new CloseableRegistry(); ByteArrayOutputStream byteArray=new ByteArrayOutputStream(); try { r.register(byteArray); PrintStream out=new PrintStream(byteArray); r.register(out); ex.printStackTrace(out); } finally { r.close(); } return new String(byteArray.toByteArray()); } private static String getStackTraceWriter (RemoteProxyException ex) { CloseableRegistry r=new CloseableRegistry(); StringWriter string=new StringWriter(); try { r.register(string); PrintWriter out=new PrintWriter(string); r.register(out); ex.printStackTrace(out); } finally { r.close(); } return string.toString(); } @Test public void basics() { assertEquality(new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,TEST_CLASS), new RemoteProxyException (null,TEST_TRACE,TEST_STRING,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,null,TEST_STRING,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,null,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,null), new RemoteProxyException (TEST_MESSAGE+"d",TEST_TRACE,TEST_STRING,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,new String[] {"d"},TEST_STRING,TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING+"d",TEST_CLASS), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,TEST_CLASS+"d")); RemoteProxyException ex=new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,TEST_CLASS); assertEquals(TEST_MESSAGE,ex.getMessage()); assertArrayEquals(TEST_TRACE,ex.getTraceCapture()); assertEquals(TEST_TRACE_PRINT,getStackTraceNoArg(ex)); assertEquals(TEST_TRACE_PRINT,getStackTraceStream(ex)); assertEquals(TEST_TRACE_PRINT,getStackTraceWriter(ex)); assertNull(ex.getStackTrace()); assertEquals(TEST_STRING,ex.toString()); assertEquals(TEST_CLASS,ex.getServerName()); } @Test public void nullParams() { assertEquality(new RemoteProxyException (null,null,null,null), new RemoteProxyException (null,null,null,null), new RemoteProxyException (TEST_MESSAGE,TEST_TRACE,TEST_STRING,TEST_CLASS)); RemoteProxyException ex=new RemoteProxyException (null,null,null,null); assertNull(ex.getMessage()); assertNull(ex.getTraceCapture()); assertEquals(StringUtils.EMPTY,getStackTraceNoArg(ex)); assertEquals(StringUtils.EMPTY,getStackTraceStream(ex)); assertEquals(StringUtils.EMPTY,getStackTraceWriter(ex)); assertNull(ex.getStackTrace()); assertNull(ex.toString()); assertNull(ex.getServerName()); } }