package org.jacorb.test.orb;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.jacorb.test.ExceptionServer;
import org.jacorb.test.ExceptionServerHelper;
import org.jacorb.test.MyUserException;
import org.jacorb.test.MyUserExceptionHelper;
import org.jacorb.test.NonEmptyException;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.ClientServerTestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* This class gathers all sorts of exception-related tests.
* @author Andre Spiegel spiegel@gnu.org
*/
public class ExceptionTest extends ClientServerTestCase
{
private ExceptionServer server;
@Before
public void setUp() throws Exception
{
server = ExceptionServerHelper.narrow( setup.getServerObject() );
}
@After
public void tearDown() throws Exception
{
Thread.sleep(1000);
server = null;
}
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
setup = new ClientServerSetup(ExceptionServerImpl.class.getName());
}
/**
* Checks whether a RuntimeException in the Servant is
* properly reported back to the client, including the
* error message.
*/
@Test
public void testRuntimeException()
{
try
{
server.throwRuntimeException("sample message");
fail("should have raised a CORBA SystemException");
}
catch (org.omg.CORBA.SystemException ex)
{
assertEquals("Server-side Exception: java.lang.RuntimeException: sample message", ex.getMessage());
}
}
/**
* Checks if a user exception is properly reported back to the client.
*/
@Test
public void testUserException1()
{
try
{
server.throwUserExceptionWithMessage1(77, "my sample message");
fail("should have thrown NonEmptyException");
}
catch (NonEmptyException ex)
{
assertEquals (77, ex.field1);
assertEquals ("my sample message", ex.field2);
}
}
@Test
public void testUserException2()
{
try
{
server.throwUserException();
fail();
}
catch(MyUserException e)
{
// expected
assertEquals(MyUserExceptionHelper.id(), e.getMessage());
}
}
@Test
public void testUserExceptionWithData()
{
try
{
server.throwUserExceptionWithMessage2("sample reason", "sample message");
fail();
}
catch(MyUserException e)
{
// expected
assertEquals("sample reason", e.getMessage());
assertEquals("sample message", e.message);
}
}
}