From: AeonLucid Date: Sun, 1 Nov 2020 22:07:48 +0000 (+0100) Subject: Fix packet recorder and re-enable RemoveMessage test X-Git-Tag: v1.2.2~47^2~4 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=ed2de507adadb3f9af9b912b9f4c1fabaadb1c93;p=rhonda%2Fimpostor.git Fix packet recorder and re-enable RemoveMessage test --- diff --git a/src/Impostor.Server/Recorder/PacketRecorder.cs b/src/Impostor.Server/Recorder/PacketRecorder.cs index 8824415..322af4f 100644 --- a/src/Impostor.Server/Recorder/PacketRecorder.cs +++ b/src/Impostor.Server/Recorder/PacketRecorder.cs @@ -146,7 +146,7 @@ namespace Impostor.Server.Recorder context.Writer.Write((byte) messageType); context.Writer.Write((byte) reader.Tag); context.Writer.Write((int) reader.Length); - context.Writer.Write(reader.Buffer.AsSpan(0, reader.Length)); + context.Writer.Write(reader.Buffer, reader.Offset, reader.Length); } private static void WriteGameCode(PacketSerializationContext context, in GameCode gameCode) diff --git a/src/Impostor.Tests/Hazel/MessageReaderTests.cs b/src/Impostor.Tests/Hazel/MessageReaderTests.cs index da13696..a51b8bf 100644 --- a/src/Impostor.Tests/Hazel/MessageReaderTests.cs +++ b/src/Impostor.Tests/Hazel/MessageReaderTests.cs @@ -280,67 +280,67 @@ namespace Impostor.Tests.Hazel Assert.Equal("NO", sub.ReadString()); } - // [Fact] - // public void RemoveMessage() - // { - // // Create expected message. - // var messageExpected = new MessageWriter(1024); - // - // messageExpected.StartMessage(0); - // messageExpected.StartMessage(1); - // messageExpected.Write("HiTest"); - // messageExpected.EndMessage(); - // messageExpected.StartMessage(2); - // messageExpected.Write("HiTest"); - // messageExpected.EndMessage(); - // messageExpected.EndMessage(); - // - // // Create message. - // var messageWriter = new MessageWriter(1024); - // - // messageWriter.StartMessage(0); - // messageWriter.StartMessage(1); - // messageWriter.Write("HiTest1"); - // messageWriter.StartMessage(2); - // messageWriter.Write("RemoveMe!"); - // messageWriter.EndMessage(); - // messageWriter.EndMessage(); - // messageWriter.StartMessage(2); - // messageWriter.Write("HiTest2"); - // messageWriter.EndMessage(); - // messageWriter.EndMessage(); - // - // // Do the magic. - // var readerPool = CreateReaderPool(); - // var reader = readerPool.Get(); - // reader.Update(messageWriter.Buffer); - // var inner = reader.ReadMessage(); - // - // while (inner.Position < inner.Length) - // { - // var message = inner.ReadMessage(); - // if (message.Tag == 1) - // { - // Assert.Equal("HiTest1", message.ReadString()); - // - // var messageSub = message.ReadMessage(); - // if (messageSub.Tag == 2) - // { - // Assert.Equal("RemoveMe!", messageSub.ReadString()); - // - // // Remove this message. - // // inner.RemoveMessage(messageSub); - // } - // } - // else if (message.Tag == 2) - // { - // Assert.Equal("HiTest2", message.ReadString()); - // } - // } - // - // // Check if the magic was successful. - // Assert.Equal(messageExpected.ToByteArray(true), messageWriter.ToByteArray(true)); - // } + [Fact] + public void RemoveMessage() + { + // Create expected message. + var messageExpected = new MessageWriter(1024); + + messageExpected.StartMessage(0); + messageExpected.StartMessage(1); + messageExpected.Write("HiTest"); + messageExpected.EndMessage(); + messageExpected.StartMessage(2); + messageExpected.Write("HiTest"); + messageExpected.EndMessage(); + messageExpected.EndMessage(); + + // Create message. + var messageWriter = new MessageWriter(1024); + + messageWriter.StartMessage(0); + messageWriter.StartMessage(1); + messageWriter.Write("HiTest1"); + messageWriter.StartMessage(2); + messageWriter.Write("RemoveMe!"); + messageWriter.EndMessage(); + messageWriter.EndMessage(); + messageWriter.StartMessage(2); + messageWriter.Write("HiTest2"); + messageWriter.EndMessage(); + messageWriter.EndMessage(); + + // Do the magic. + var readerPool = CreateReaderPool(); + var reader = readerPool.Get(); + reader.Update(messageWriter.Buffer); + var inner = reader.ReadMessage(); + + while (inner.Position < inner.Length) + { + var message = inner.ReadMessage(); + if (message.Tag == 1) + { + Assert.Equal("HiTest1", message.ReadString()); + + var messageSub = message.ReadMessage(); + if (messageSub.Tag == 2) + { + Assert.Equal("RemoveMe!", messageSub.ReadString()); + + // Remove this message. + inner.RemoveMessage(messageSub); + } + } + else if (message.Tag == 2) + { + Assert.Equal("HiTest2", message.ReadString()); + } + } + + // Check if the magic was successful. + Assert.Equal(messageExpected.ToByteArray(true), messageWriter.ToByteArray(true)); + } [Fact] public void GetLittleEndian()