package com.limegroup.gnutella.routing;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import junit.framework.Test;
import com.limegroup.gnutella.messages.Message;
import com.limegroup.gnutella.util.BaseTestCase;
/**
* Unit tests for ResetTableMessage
*/
public class ResetTableMessageTest extends BaseTestCase {
public ResetTableMessageTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(ResetTableMessageTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testLegacy() throws Exception {
//From scratch. Check encode/decode.
ResetTableMessage m=new ResetTableMessage(1024, (byte)10);
assertEquals(ResetTableMessage.RESET_VARIANT, m.getVariant());
assertEquals((byte)1, m.getTTL());
assertEquals(1024, m.getTableSize());
assertEquals(10, m.getInfinity());
ByteArrayOutputStream out=new ByteArrayOutputStream();
m.write(out);
out.flush();
m=read(out.toByteArray());
assertEquals(ResetTableMessage.RESET_VARIANT, m.getVariant());
assertEquals((byte)1, m.getTTL());
assertEquals(1024, m.getTableSize());
assertEquals(10, m.getInfinity());
//Read from bytes
byte[] message=new byte[23+6];
message[16]=Message.F_ROUTE_TABLE_UPDATE; //function code
message[17]=(byte)3; //TTL
message[19]=(byte)6; //payload length
message[23+0]=(byte)RouteTableMessage.RESET_VARIANT; //reset variant
message[23+2]=(byte)1; //size==256
message[23+5]=(byte)10; //infinity
m=read(message);
assertEquals(RouteTableMessage.RESET_VARIANT, m.getVariant());
assertEquals((byte)10, m.getInfinity());
assertEquals(256, m.getTableSize());
}
static ResetTableMessage read(byte[] bytes) throws Exception {
InputStream in=new ByteArrayInputStream(bytes);
return (ResetTableMessage)Message.read(in);
}
}