private static void TestFormatRoundTrip(byte[] packet, DnsMessage message) { byte[] buffer = new byte[packet.Length]; int bytesWritten = DnsParser.FormatMessage(message, buffer); Assert.Equal(buffer.Length, bytesWritten); Assert.Equal(packet, buffer); }
public void NamePointerFormatting() { var message = new DnsMessage() { Queries = new[] { new DnsQuery("example.com", DnsRecordType.A, DnsEndpointClass.IN), new DnsQuery("www.example.com", DnsRecordType.A, DnsEndpointClass.IN), new DnsQuery("com", DnsRecordType.A, DnsEndpointClass.IN), } }; byte[] buffer = new byte[1024]; int bytesWritten = DnsParser.FormatMessage(message, buffer, enableNameCompression: true); var message2 = DnsParser.ParseMessage(buffer.AsSpan(0, bytesWritten), out int bytesConsumed); Assert.Equal(bytesWritten, bytesConsumed); Assert.Equal(3, message2.Queries.Count); Assert.Equal("example.com", message2.Queries[0].QueryName); Assert.Equal("www.example.com", message2.Queries[1].QueryName); Assert.Equal("com", message2.Queries[2].QueryName); }