package vnet.sms.gateway.transports.serialization;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.jboss.netty.handler.codec.frame.FrameDecoder;
import org.jboss.netty.handler.codec.oneone.OneToOneDecoder;
import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
import org.jboss.netty.handler.codec.serialization.ObjectDecoder;
import org.jboss.netty.handler.codec.serialization.ObjectEncoder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import vnet.sms.gateway.nettysupport.transport.incoming.TransportProtocolAdaptingUpstreamChannelHandler;
import vnet.sms.gateway.nettysupport.transport.outgoing.TransportProtocolAdaptingDownstreamChannelHandler;
import vnet.sms.gateway.nettysupport.window.spi.MessageReferenceGenerator;
import vnet.sms.gateway.transport.spi.TransportProtocolPlugin;
import vnet.sms.gateway.transports.serialization.incoming.SerializationTransportProtocolAdaptingUpstreamChannelHandler;
import vnet.sms.gateway.transports.serialization.outgoing.SerializationTransportProtocolAdaptingDownstreamChannelHandler;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:META-INF/module/module-context.xml")
public class SerializationTransportPluginContextIT {
@Autowired
private TransportProtocolPlugin<Integer, ReferenceableMessageContainer> objectUnderTest;
@Test
public final void assertThatExportedTransportProtocolPluginExportsReferenceablMessageContainerAsPduType() {
final Class<?> exportedPduType = this.objectUnderTest.getPduType();
assertEquals(
"Exported transport plugin should export ReferenceableMessageContainer as PduType",
ReferenceableMessageContainer.class, exportedPduType);
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsObjectDecoderAsFrameDecoder() {
final FrameDecoder exportedFrameDecoder = this.objectUnderTest
.getFrameDecoder();
assertEquals(
"Exported transport plugin should export ObjectDecoder as FrameDecoder",
ObjectDecoder.class, exportedFrameDecoder.getClass());
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsNoDecoder() {
final OneToOneDecoder exportedDecoder = this.objectUnderTest
.getDecoder();
assertNull("Exported transport plugin should export NO decoder",
exportedDecoder);
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsObjectEncoderAsEncoder() {
final OneToOneEncoder exportedEncoder = this.objectUnderTest
.getEncoder();
assertEquals(
"Exported transport plugin should export ObjectEncoder as encoder",
ObjectEncoder.class, exportedEncoder.getClass());
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsSerializationTransportProtocolAdaptingUpstreamChannelHandler() {
final TransportProtocolAdaptingUpstreamChannelHandler<Integer, ReferenceableMessageContainer> exportedUpstreamConverter = this.objectUnderTest
.getPduToWindowedMessageEventConverter();
assertEquals(
"Exported transport plugin should export SerializationTransportProtocolAdaptingUpstreamChannelHandler",
SerializationTransportProtocolAdaptingUpstreamChannelHandler.class,
exportedUpstreamConverter.getClass());
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsSerializationTransportProtocolAdaptingDownstreamChannelHandler() {
final TransportProtocolAdaptingDownstreamChannelHandler<Integer, ReferenceableMessageContainer> exportedDownstreamConverter = this.objectUnderTest
.getWindowedMessageEventToPduConverter();
assertEquals(
"Exported transport plugin should export SerializationTransportProtocolAdaptingUpstreamChannelHandler",
SerializationTransportProtocolAdaptingDownstreamChannelHandler.class,
exportedDownstreamConverter.getClass());
}
@Test
public final void assertThatExportedTransportProtocolPluginExportsMonotonicallyIncreasingMessageReferenceGenerator() {
final MessageReferenceGenerator<Integer> exportedMessageRefGen = this.objectUnderTest
.getMessageReferenceGenerator();
assertEquals(
"Exported transport plugin should export MonotonicallyIncreasingMessageReferenceGenerator",
MonotonicallyIncreasingMessageReferenceGenerator.class,
exportedMessageRefGen.getClass());
}
}