@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);
 }