package net.tomp2p.message; import java.util.Random; import net.tomp2p.message.Message.Content; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; public class TestMessageHeaderCodec { @Rule public TestRule watcher = new TestWatcher() { protected void starting(Description description) { System.out.println("Starting test: " + description.getMethodName()); } }; @Test public void testContentTypeCodec() { Random rnd = new Random(42); System.err.print("Round:"); for (int i = 0; i < 100; i++) { System.err.print(i + " "); Content[] types1 = initContentTypes(rnd); int nr = MessageHeaderCodec.encodeContentTypes(types1); Content[] types2 = MessageHeaderCodec.decodeContentTypes(nr, new Message()); compare(types2, types1); } System.err.println(" done."); } private void compare(Content[] types2, Content[] types1) { Assert.assertEquals(types1.length, types2.length); for(int i=0;i<types1.length;i++) { if(types1[i] == null) { types1[i] = Content.EMPTY; } } Assert.assertArrayEquals(types2, types1); } private Content[] initContentTypes(Random rnd) { Content[] contents = new Content[Message.CONTENT_TYPE_LENGTH]; int len = rnd.nextInt(9); for (int i = 0; i < len; i++) { contents[i] = Content.values()[rnd.nextInt(8)]; } return contents; } }