Files
MQTTnet/Source/MQTTnet.Tests/Formatter/MqttPacketWriter_Tests.cs
T
2022-02-20 21:10:46 +01:00

92 lines
3.1 KiB
C#

using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Formatter;
namespace MQTTnet.Tests.Formatter
{
[TestClass]
public sealed class MqttPacketWriter_Tests
{
[TestMethod]
public void Reset_After_Usage()
{
var writer = new MqttBufferWriter(4096, 65535);
writer.WriteString("AString");
writer.WriteByte(0x1);
writer.WriteByte(0x0);
writer.WriteByte(0x1);
writer.WriteVariableByteInteger(1234U);
writer.WriteVariableByteInteger(9876U);
writer.Reset(0);
Assert.AreEqual(0, writer.Length);
}
[TestMethod]
public void Use_All_Data_Types()
{
var writer = new MqttBufferWriter(4096, 65535);
writer.WriteString("AString");
writer.WriteByte(0x1);
writer.WriteByte(0x0);
writer.WriteByte(0x1);
writer.WriteVariableByteInteger(1234U);
writer.WriteVariableByteInteger(9876U);
var buffer = writer.GetBuffer();
var reader = new MqttBufferReader();
reader.SetBuffer(buffer, 0, writer.Length);
Assert.AreEqual("AString", reader.ReadString());
Assert.IsTrue(reader.ReadByte() == 1);
Assert.IsTrue(reader.ReadByte() == 0);
Assert.IsTrue(reader.ReadByte() == 1);
Assert.AreEqual(1234U, reader.ReadVariableByteInteger());
Assert.AreEqual(9876U, reader.ReadVariableByteInteger());
}
[TestMethod]
public void Write_And_Read_Multiple_Times()
{
var writer = new MqttBufferWriter(4096, 65535);
writer.WriteString("A relative short string.");
writer.WriteBinaryData(new byte[1234]);
writer.WriteByte(0x01);
writer.WriteByte(0x02);
writer.WriteVariableByteInteger(5647382);
writer.WriteString("A relative short string.");
writer.WriteVariableByteInteger(8574489);
writer.WriteBinaryData(new byte[48]);
writer.WriteByte(2);
writer.WriteByte(0x02);
writer.WriteString("fjgffiogfhgfhoihgoireghreghreguhreguireoghreouighreouighreughreguiorehreuiohruiorehreuioghreug");
writer.WriteBinaryData(new byte[3]);
var readPayload = new ArraySegment<byte>(writer.GetBuffer(), 0, writer.Length).ToArray();
var reader = new MqttBufferReader();
reader.SetBuffer(readPayload, 0, readPayload.Length);
for (var i = 0; i < 100000; i++)
{
reader.Seek(0);
reader.ReadString();
reader.ReadBinaryData();
reader.ReadByte();
reader.ReadByte();
reader.ReadVariableByteInteger();
reader.ReadString();
reader.ReadVariableByteInteger();
reader.ReadBinaryData();
reader.ReadByte();
reader.ReadByte();
reader.ReadString();
reader.ReadBinaryData();
}
}
}
}