package org.marketcetera.util.ws.wrappers;
import java.util.Locale;
import org.junit.Test;
import org.marketcetera.util.log.ActiveLocale;
import org.marketcetera.util.log.I18NBoundMessage1P;
import org.marketcetera.util.log.I18NBoundMessage;
import static org.junit.Assert.*;
import static org.marketcetera.util.test.EqualityAssert.*;
/**
* @author tlerios@marketcetera.com
* @since 2.0.0
* @version $Id: RemoteI18NBoundMessageTest.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class RemoteI18NBoundMessageTest
extends WrapperTestBase
{
private static final String EXPECTED_MESSAGE=
"Bound message text is '"+TEST_MESSAGE+"'";
private static final String EXPECTED_MESSAGE_FR=
"Bound message text in French is '"+TEST_MESSAGE+"'";
private static final String EXPECTED_NONSER_MESSAGE=
"Bound message text is 'I am 1'";
private static final String EXPECTED_NONSER_MESSAGE_FR=
"Bound message text in French is 'I am 1'";
private static final String EXPECTED_NONDESER_MESSAGE=
"provider 'nonexistent_prv'; id 'any'; entry 'msg'; parameters ()";
private void singleBase
(RemoteI18NBoundMessage m,
SerWrapper<I18NBoundMessage> wrapper,
boolean wrapperSerFailure,
boolean wrapperDeSerFailure,
String string,
String text,
String textFr)
{
assertEquals(wrapper,m.getWrapper());
if (wrapperSerFailure) {
assertSerWrapperSerFailure(m.getWrapper());
} else if (m.getWrapper()!=null) {
assertNull(m.getWrapper().getSerializationException());
}
if (wrapperDeSerFailure) {
assertSerWrapperDeSerFailure(m.getWrapper());
} else if (m.getWrapper()!=null) {
assertNull(m.getWrapper().getDeserializationException());
}
assertEquals(string,m.getString());
assertEquals(text,m.getText());
assertEquals(text,m.toString());
ActiveLocale.setProcessLocale(Locale.FRENCH);
assertEquals(textFr,m.getText());
assertEquals(textFr,m.toString());
ActiveLocale.setProcessLocale(Locale.ROOT);
}
private void singleNonSerializable
(RemoteI18NBoundMessage server,
RemoteI18NBoundMessage client)
{
singleBase(client,
server.getWrapper(),
false,
false,
server.getString(),
server.getText(),
server.getText());
}
private void singleNonDeserializable
(RemoteI18NBoundMessage server,
RemoteI18NBoundMessage client)
{
singleBase(client,
new SerWrapper<I18NBoundMessage>(),
false,
true,
server.getString(),
server.getText(),
server.getText());
}
private void single
(RemoteI18NBoundMessage server,
SerWrapper<I18NBoundMessage> wrapper,
String string,
String text,
String textFr)
throws Exception
{
singleBase
(server,wrapper,
false,false,string,text,textFr);
singleBase
(assertRoundTripJAXB(server),wrapper,
false,false,string,text,textFr);
singleBase
(assertRoundTripJava(server),wrapper,
false,false,string,text,textFr);
}
@Test
public void basics()
throws Exception
{
assertEquality
(new RemoteI18NBoundMessage(null),
new RemoteI18NBoundMessage(null),
new RemoteI18NBoundMessage(TEST_I18N_MESSAGE));
single(new RemoteI18NBoundMessage(null),
null,
null,
null,
null);
assertEquality
(new RemoteI18NBoundMessage(TEST_I18N_MESSAGE),
new RemoteI18NBoundMessage(TEST_I18N_MESSAGE),
new RemoteI18NBoundMessage(null),
new RemoteI18NBoundMessage
(new I18NBoundMessage1P(TestMessages.BOUND,TEST_MESSAGE+"d")));
single(new RemoteI18NBoundMessage(TEST_I18N_MESSAGE),
new SerWrapper<I18NBoundMessage>(TEST_I18N_MESSAGE),
EXPECTED_MESSAGE,
EXPECTED_MESSAGE,
EXPECTED_MESSAGE_FR);
}
@Test
public void setters()
{
RemoteI18NBoundMessage m=new RemoteI18NBoundMessage(TEST_I18N_MESSAGE);
SerWrapper<I18NBoundMessage> wrapper=new SerWrapper<I18NBoundMessage>();
m.setWrapper(wrapper);
assertEquals(wrapper,m.getWrapper());
m.setString(TEST_MESSAGE);
assertEquals(TEST_MESSAGE,m.getString());
m.setWrapper(null);
assertNull(m.getWrapper());
m.setString(null);
assertNull(m.getString());
}
@Test
public void nonSerializableThrowable()
throws Exception
{
prepareSerWrapperFailure();
RemoteI18NBoundMessage server=
new RemoteI18NBoundMessage(TEST_NONSER_MESSAGE);
assertEquality(server,
new RemoteI18NBoundMessage(TEST_NONSER_MESSAGE),
new RemoteI18NBoundMessage(null),
new RemoteI18NBoundMessage(TEST_I18N_MESSAGE));
singleBase(server,
new SerWrapper<I18NBoundMessage>(),
true,
false,
EXPECTED_NONSER_MESSAGE,
EXPECTED_NONSER_MESSAGE,
EXPECTED_NONSER_MESSAGE_FR);
singleNonSerializable(server,assertRoundTripJAXB(server));
singleNonSerializable(server,assertRoundTripJava(server));
}
@Test
public void nonDeserializableThrowable()
throws Exception
{
RemoteI18NBoundMessage server=
new RemoteI18NBoundMessage(TEST_NONDESER_MESSAGE);
assertEquality(server,
new RemoteI18NBoundMessage(TEST_NONDESER_MESSAGE),
new RemoteI18NBoundMessage(null),
new RemoteI18NBoundMessage(TEST_I18N_MESSAGE));
singleBase(server,
new SerWrapper<I18NBoundMessage>(TEST_NONDESER_MESSAGE),
false,
false,
EXPECTED_NONDESER_MESSAGE,
EXPECTED_NONDESER_MESSAGE,
EXPECTED_NONDESER_MESSAGE);
singleNonDeserializable(server,assertRoundTripJAXB(server));
singleNonDeserializable(server,assertRoundTripJava(server));
}
}