using System.Buffers.Binary; namespace MoShiro.Measurement.Tests; public sealed class IcmpReplyTests { [Theory] [InlineData((byte)0)] [InlineData((byte)129)] public void ReplyMustMatchTypeCodeSequenceAndPayload(byte replyType) { byte[] request = new byte[44]; request[8] = 71; byte[] reply = (byte[])request.Clone(); reply[0] = replyType; BinaryPrimitives.WriteUInt16BigEndian(reply.AsSpan(6), 123); // Linux changes the identifier; it is not the request's zero identifier. reply[4] = 42; Assert.True(LinuxIcmpEcho.IsReply(reply, request, replyType, 123)); Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 124)); Assert.False(LinuxIcmpEcho.IsReply(reply.AsSpan(0, 7), request, replyType, 123)); reply[1] = 1; Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123)); reply[1] = 0; reply[0]++; Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123)); reply[0] = replyType; reply[8]++; Assert.False(LinuxIcmpEcho.IsReply(reply, request, replyType, 123)); } }