package com.limegroup.gnutella.messages.vendor; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.limewire.util.BaseTestCase; import com.google.inject.Injector; import com.limegroup.gnutella.LimeTestUtils; import com.limegroup.gnutella.messages.Message; import com.limegroup.gnutella.messages.MessageFactory; import com.limegroup.gnutella.messages.Message.Network; import com.limegroup.gnutella.messages.vendor.OOBProxyControlVendorMessage.Control; public class OOBProxyControlVendorMessageTest extends BaseTestCase { private MessageFactory messageFactory; public OOBProxyControlVendorMessageTest(String name) { super(name); } @Override protected void setUp() throws Exception { Injector injector = LimeTestUtils.createInjector(); messageFactory = injector.getInstance(MessageFactory.class); } public void testDoNotProxyAtAllMessage() throws Exception { OOBProxyControlVendorMessage msg = OOBProxyControlVendorMessage.createDoNotProxyMessage(); assertEquals(Integer.MAX_VALUE, msg.getMaximumDisabledVersion()); writeAndReadMessage(msg); msg = new OOBProxyControlVendorMessage(Control.DISABLE_FOR_ALL_VERSIONS); assertEquals(Integer.MAX_VALUE, msg.getMaximumDisabledVersion()); writeAndReadMessage(msg); } public void testAllowProxyingAllMessage() throws Exception { OOBProxyControlVendorMessage msg = OOBProxyControlVendorMessage.createDoProxyMessage(); assertEquals(0, msg.getMaximumDisabledVersion()); writeAndReadMessage(msg); msg = new OOBProxyControlVendorMessage(Control.ENABLE_FOR_ALL_VERSIONS); assertEquals(0, msg.getMaximumDisabledVersion()); writeAndReadMessage(msg); } public void testConcreteMaximumVersionNotAllowed() throws Exception { for (Control control : new Control[] { Control.DISABLE_VERSION_1, Control.DISABLE_VERSION_2, Control.DISABLE_VERSION_3, Control.DISABLE_VERSION_255}) { OOBProxyControlVendorMessage msg = new OOBProxyControlVendorMessage(control); assertEquals(control.getVersion(), msg.getMaximumDisabledVersion()); writeAndReadMessage(msg); } } private OOBProxyControlVendorMessage writeAndReadMessage(OOBProxyControlVendorMessage msg) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); msg.write(out); Message m = messageFactory.read(new ByteArrayInputStream(out.toByteArray()), Network.TCP); assertTrue(m instanceof OOBProxyControlVendorMessage); OOBProxyControlVendorMessage read = (OOBProxyControlVendorMessage)m; assertEquals(msg.getMaximumDisabledVersion(), read.getMaximumDisabledVersion()); return read; } }