mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-21 04:03:05 +08:00
added tests
This commit is contained in:
@@ -24,7 +24,6 @@ namespace MQTTnet.AspNetCore
|
|||||||
|
|
||||||
public byte ReadByte()
|
public byte ReadByte()
|
||||||
{
|
{
|
||||||
ValidateReceiveBuffer(1);
|
|
||||||
return _buffer.Span[_offset++];
|
return _buffer.Span[_offset++];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,9 +34,7 @@ namespace MQTTnet.AspNetCore
|
|||||||
|
|
||||||
public ushort ReadUInt16()
|
public ushort ReadUInt16()
|
||||||
{
|
{
|
||||||
ValidateReceiveBuffer(2);
|
var result = BinaryPrimitives.ReadUInt16BigEndian(_buffer.Span.Slice(_offset));
|
||||||
|
|
||||||
var result = BinaryPrimitives.ReadUInt16BigEndian(_buffer.Span);
|
|
||||||
_offset += 2;
|
_offset += 2;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -49,23 +46,14 @@ namespace MQTTnet.AspNetCore
|
|||||||
|
|
||||||
private ReadOnlySpan<byte> ReadSegmentWithLengthPrefix()
|
private ReadOnlySpan<byte> ReadSegmentWithLengthPrefix()
|
||||||
{
|
{
|
||||||
var length = ReadUInt16();
|
var span = _buffer.Span;
|
||||||
|
var length = BinaryPrimitives.ReadUInt16BigEndian(span.Slice(_offset));
|
||||||
|
|
||||||
ValidateReceiveBuffer(length);
|
var result = span.Slice(_offset+2, length);
|
||||||
|
_offset += 2 + length;
|
||||||
var result = _buffer.Slice(_offset, length).Span;
|
|
||||||
_offset += length;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ValidateReceiveBuffer(ushort length)
|
|
||||||
{
|
|
||||||
if (_buffer.Length < _offset + length)
|
|
||||||
{
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(_buffer), $"expected at least {_offset + length} bytes but there are only {_buffer.Length} bytes");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public unsafe string ReadStringWithLengthPrefix()
|
public unsafe string ReadStringWithLengthPrefix()
|
||||||
{
|
{
|
||||||
var buffer = ReadSegmentWithLengthPrefix();
|
var buffer = ReadSegmentWithLengthPrefix();
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using MQTTnet.Core.Tests;
|
||||||
|
using MQTTnet.Serializer;
|
||||||
|
|
||||||
|
namespace MQTTnet.AspNetCore.Tests
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class MqttPacketSerializerTestsWithSpanBasedReader : MqttPacketSerializerTests
|
||||||
|
{
|
||||||
|
protected override IPacketBodyReader ReaderFactory(byte[] data)
|
||||||
|
{
|
||||||
|
var result = new SpanBasedMqttPacketBodyReader();
|
||||||
|
result.SetBuffer(data);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -528,7 +528,12 @@ namespace MQTTnet.Tests
|
|||||||
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
|
Assert.AreEqual(expectedBase64Value, Convert.ToBase64String(Join(data)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DeserializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
|
protected virtual IMqttPacketBodyReader ReaderFactory(byte[] data)
|
||||||
|
{
|
||||||
|
return new MqttPacketBodyReader(data, 0, data.Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeserializeAndCompare(MqttBasePacket packet, string expectedBase64Value, MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311)
|
||||||
{
|
{
|
||||||
IMqttPacketFormatter serializer;
|
IMqttPacketFormatter serializer;
|
||||||
if (protocolVersion == MqttProtocolVersion.V311)
|
if (protocolVersion == MqttProtocolVersion.V311)
|
||||||
|
|||||||
Reference in New Issue
Block a user