mirror of
https://github.com/Impostor/Impostor.git
synced 2026-10-20 01:46:11 +00:00
Added BufferMessageReader tests
This commit is contained in:
1 parent
c3a2d6ecfd
commit
daae9b9e4e
3 files changed
+180
No files matched your search
@@ -15,4 +15,10 @@
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0-rc.1.20451.14" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
|
||||
<_Parameter1>Impostor.Tests</_Parameter1>
|
||||
</AssemblyAttribute>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,172 @@
|
||||
using Hazel;
|
||||
using Impostor.Server.Hazel.Messages;
|
||||
using Impostor.Server.Net.Messages;
|
||||
using Xunit;
|
||||
|
||||
namespace Impostor.Tests.Hazel
|
||||
{
|
||||
public class BufferMessageReaderTests
|
||||
{
|
||||
[Fact]
|
||||
public void ReadProperInt()
|
||||
{
|
||||
const int Test1 = int.MaxValue;
|
||||
const int Test2 = int.MinValue;
|
||||
|
||||
var msg = new MessageWriter(128);
|
||||
msg.StartMessage(1);
|
||||
msg.Write(Test1);
|
||||
msg.Write(Test2);
|
||||
msg.EndMessage();
|
||||
|
||||
Assert.Equal(11, msg.Length);
|
||||
Assert.Equal(msg.Length, msg.Position);
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var reader = message.CreateReader();
|
||||
|
||||
Assert.Equal(Test1, reader.ReadInt32());
|
||||
Assert.Equal(Test2, reader.ReadInt32());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadProperBool()
|
||||
{
|
||||
const bool Test1 = true;
|
||||
const bool Test2 = false;
|
||||
|
||||
var msg = new MessageWriter(128);
|
||||
msg.StartMessage(1);
|
||||
msg.Write(Test1);
|
||||
msg.Write(Test2);
|
||||
msg.EndMessage();
|
||||
|
||||
Assert.Equal(5, msg.Length);
|
||||
Assert.Equal(msg.Length, msg.Position);
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var reader = message.CreateReader();
|
||||
|
||||
Assert.Equal(Test1, reader.ReadBoolean());
|
||||
Assert.Equal(Test2, reader.ReadBoolean());
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadProperString()
|
||||
{
|
||||
const string Test1 = "Hello";
|
||||
string Test2 = new string(' ', 1024);
|
||||
var msg = new MessageWriter(2048);
|
||||
msg.StartMessage(1);
|
||||
msg.Write(Test1);
|
||||
msg.Write(Test2);
|
||||
msg.Write(string.Empty);
|
||||
msg.EndMessage();
|
||||
|
||||
Assert.Equal(msg.Length, msg.Position);
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var reader = message.CreateReader();
|
||||
|
||||
Assert.Equal(Test1, reader.ReadString());
|
||||
Assert.Equal(Test2, reader.ReadString());
|
||||
Assert.Equal(string.Empty, reader.ReadString());
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadProperFloat()
|
||||
{
|
||||
const float Test1 = 12.34f;
|
||||
|
||||
var msg = new MessageWriter(2048);
|
||||
msg.StartMessage(1);
|
||||
msg.Write(Test1);
|
||||
msg.EndMessage();
|
||||
|
||||
Assert.Equal(7, msg.Length);
|
||||
Assert.Equal(msg.Length, msg.Position);
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var reader = message.CreateReader();
|
||||
|
||||
Assert.Equal(Test1, reader.ReadSingle());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopySubMessage()
|
||||
{
|
||||
const byte Test1 = 12;
|
||||
const byte Test2 = 146;
|
||||
|
||||
var msg = new MessageWriter(2048);
|
||||
msg.StartMessage(1);
|
||||
|
||||
msg.StartMessage(2);
|
||||
msg.Write(Test1);
|
||||
msg.Write(Test2);
|
||||
msg.EndMessage();
|
||||
|
||||
msg.EndMessage();
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var handleMessage = message.CreateReader();
|
||||
Assert.Equal(1, handleMessage.Tag);
|
||||
|
||||
var parentReader = handleMessage.Slice(handleMessage.Position);
|
||||
|
||||
Assert.Equal(1, parentReader.Tag);
|
||||
|
||||
var reader = parentReader.ReadMessage();
|
||||
|
||||
Assert.Equal(2, reader.Tag);
|
||||
Assert.Equal(Test1, reader.ReadByte());
|
||||
Assert.Equal(Test2, reader.ReadByte());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReadMessageLength()
|
||||
{
|
||||
var msg = new MessageWriter(2048);
|
||||
msg.StartMessage(1);
|
||||
msg.Write(65534);
|
||||
msg.StartMessage(2);
|
||||
msg.Write("HO");
|
||||
msg.EndMessage();
|
||||
msg.StartMessage(2);
|
||||
msg.Write("NO");
|
||||
msg.EndMessage();
|
||||
msg.EndMessage();
|
||||
|
||||
Assert.Equal(msg.Length, msg.Position);
|
||||
|
||||
var message = new HazelMessage(MessageReader.Get(msg.Buffer, 0), MessageType.Reliable);
|
||||
var reader = message.CreateReader();
|
||||
Assert.Equal(1, reader.Tag);
|
||||
Assert.Equal(65534, reader.ReadInt32()); // Content
|
||||
|
||||
var sub = reader.ReadMessage();
|
||||
Assert.Equal(3, sub.Length);
|
||||
Assert.Equal(2, sub.Tag);
|
||||
Assert.Equal("HO", sub.ReadString());
|
||||
|
||||
sub = reader.ReadMessage();
|
||||
Assert.Equal(3, sub.Length);
|
||||
Assert.Equal(2, sub.Tag);
|
||||
Assert.Equal("NO", sub.ReadString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetLittleEndian()
|
||||
{
|
||||
Assert.True(MessageWriter.IsLittleEndian());
|
||||
}
|
||||
|
||||
private void SetZero(MessageReader reader)
|
||||
{
|
||||
for (int i = 0; i < reader.Buffer.Length; ++i)
|
||||
reader.Buffer[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,8 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\submodules\Hazel-Networking\Hazel\Hazel.csproj" />
|
||||
<ProjectReference Include="..\Impostor.Server.Hazel\Impostor.Server.Hazel.csproj" />
|
||||
<ProjectReference Include="..\Impostor.Shared\Impostor.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
Reference in new issue
Block a user