public void TestPackageRectifierOutOfOrder() { SocketMessage package1 = new SocketMessage(Config.Default.PackageSize); package1.SetSeq(0); package1.WritePayload(new byte[] { 1 }, 0, 1); SocketMessage package2 = new SocketMessage(Config.Default.PackageSize); package2.SetSeq(1); package2.WritePayload(new byte[] { 5 }, 0, 1); SocketMessage package3 = new SocketMessage(Config.Default.PackageSize); package3.SetSeq(2); package3.WritePayload(new byte[] { 9 }, 0, 1); PackageRectifier receiver = new PackageRectifier(); receiver.PushPackage(package3); SocketMessage stream1 = receiver.PopPackage(); Assert.Equal(null, stream1); receiver.PushPackage(package2); SocketMessage stream2 = receiver.PopPackage(); Assert.Equal(null, stream2); receiver.PushPackage(package1); Assert.Equal((byte)1, receiver.PopPackage().ReadPayload(0)); Assert.Equal((byte)5, receiver.PopPackage().ReadPayload(0)); Assert.Equal((byte)9, receiver.PopPackage().ReadPayload(0)); }
public void TestPackageRectifierRepeat() { var package1 = new SocketMessage(Config.Default.PackageSize); package1.SetSeq(0); package1.WritePayload(new byte[] { 1 }, 0, 1); var package2 = new SocketMessage(Config.Default.PackageSize); package2.SetSeq(1); package2.WritePayload(new byte[] { 5 }, 0, 1); var package3 = new SocketMessage(Config.Default.PackageSize); package3.SetSeq(2); package3.WritePayload(new byte[] { 9 }, 0, 1); var package4 = new SocketMessage(Config.Default.PackageSize); package4.SetSeq(3); package4.WritePayload(new byte[] { 10 }, 0, 1); var package5 = new SocketMessage(Config.Default.PackageSize); package5.SetSeq(4); package5.WritePayload(new byte[] { 11 }, 0, 1); var receiver = new PackageRectifier(); receiver.PushPackage(package3); var stream1 = receiver.PopPackage(); Assert.AreEqual(null, stream1); receiver.PushPackage(package2); var stream2 = receiver.PopPackage(); Assert.AreEqual(null, stream2); receiver.PushPackage(package1); Assert.AreEqual((byte)1, receiver.PopPackage().ReadPayload(0)); Assert.AreEqual((byte)5, receiver.PopPackage().ReadPayload(0)); Assert.AreEqual((byte)9, receiver.PopPackage().ReadPayload(0)); receiver.PushPackage(package5); var stream4 = receiver.PopPackage(); Assert.AreEqual(null, stream4); receiver.PushPackage(package2); var stream5 = receiver.PopPackage(); Assert.AreEqual(null, stream5); receiver.PushPackage(package4); Assert.AreEqual((byte)10, receiver.PopPackage().ReadPayload(0)); Assert.AreEqual((byte)11, receiver.PopPackage().ReadPayload(0)); }