public void test_toWire() throws IOException { byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101 (byte)0x65, (byte)0x1C, // QDCOUNT (byte)0x10, (byte)0xF0, // ANCOUNT (byte)0x98, (byte)0xBA, // NSCOUNT (byte)0x71, (byte)0x90 }; // ARCOUNT m_h = new Header(raw); DNSOutput dout = new DNSOutput(); m_h.toWire(dout); byte[] out = dout.toByteArray(); assertEquals(12, out.length); for( int i=0; i<out.length; ++i){ assertEquals(raw[i], out[i]); } m_h.setOpcode(0xA); // 1010 assertEquals(0xA, m_h.getOpcode()); m_h.setRcode(0x7); // 0111 // flags is now: 1101 0111 1011 0111 raw[2] = (byte)0xD7; raw[3] = (byte)0xB7; out = m_h.toWire(); assertEquals(12, out.length); for( int i=0; i<out.length; ++i){ assertEquals("i=" + i, raw[i], out[i]); } }