public void Should_read_bytes() { var reader = new DatagramReader(new byte[] { 0, 255 }); Assert.AreEqual(0, reader.Read(4)); Assert.AreEqual(0, reader.Read(4)); Assert.AreEqual(new byte[] { 255 }, reader.ReadAllBytes()); }
public void Should_read_8_bits() { var reader = new DatagramReader(new byte[] { 80 }); Assert.AreEqual(1, reader.Read(2)); Assert.AreEqual(1, reader.Read(2)); Assert.AreEqual(0, reader.Read(4)); }
public virtual Message Deserialize(byte[] bytes) { var reader = new DatagramReader(bytes); var factory = new MessageFactory(); var version = reader.Read(Message.VersionBits); if (version != Message.Version) { throw new SerializationException("incorrect version"); } var type = (MessageType) reader.Read(Message.TypeBits); var optionCount = reader.Read(Message.OptionCountBits); var code = (CodeRegistry) reader.Read(Message.CodeBits); var id = reader.Read(Message.IdBits); var message = factory.Create(type, code, id); var currentOption = 0; for (var i = 0; i < optionCount; i++) { var delta = reader.Read(Message.OptionDeltaBits); var length = reader.Read(Message.OptionLengthBits); currentOption += delta; var option = new Option((OptionNumber) currentOption) { Value = reader.ReadBytes(length) }; message.AddOption(option); } message.Payload = reader.ReadAllBytes(); return message; }
public void Should_read_16_bits() { var reader = new DatagramReader(new byte[] { 66, 69 }); Assert.AreEqual(66, reader.Read(8)); Assert.AreEqual(69, reader.Read(8)); }