@Test /** Test entire encoding */ public void testEncoding() throws UnknownHostException { String expectedHeader = " 172.17.152.12253200 172.17.152.17 2016D 1"; String payload = "Hi Mom!"; String padding = " "; String checksumStr = " 3352"; assertEquals("Header length", ReliableTransportMessage.HEADER_LEN, expectedHeader.length()); assertEquals("padding length", 23, padding.length()); InetAddress srcIP = InetAddress.getByName("172.17.152.122"); InetAddress destIP = InetAddress.getByName("172.17.152.17"); ReliableTransportMessage msg = new ReliableTransportMessage( srcIP, destIP, 53200, 2016, ReliableTransportMessage.DATA, 1, payload); assertEquals("source IP", "/172.17.152.122", msg.getSourceIP().toString()); assertEquals("dest IP", "/172.17.152.17", msg.getDestIP().toString()); msg.encode(); String expectedEncoding = expectedHeader + payload + padding + checksumStr; assertEquals("Expected Encoding length", 78, expectedEncoding.length()); assertEquals( "Checksum input length", 73, ReliableTransportMessage.HEADER_LEN + ReliableTransportMessage.PAYLOAD_LEN); for (int i = 0; i < 73; i++) // check i-th term of checksum assertEquals("Checksum term " + i, (int) expectedEncoding.charAt(i), msg.getChecksumTerm(i)); String encodingStr = new String(msg.getBuffer()); assertEquals("encoded length", 78, encodingStr.length()); assertEquals("computed checksum", 3352, msg.getComputedChecksum()); assertEquals("encoding", expectedEncoding, encodingStr); }