private void Test(string frame, Func <byte[], IByteBuffer, ZeroFrameDecoderTestWrapper, IByteBuffer> deliveryStrategy, string expectedOutput) { byte[] frameBytes = Bytes.FromHexString(frame); IByteBuffer input = Unpooled.Buffer(256); ZeroFrameDecoderTestWrapper zeroFrameDecoderTestWrapper = new ZeroFrameDecoderTestWrapper(_frameCipher, _macProcessor); IByteBuffer result = deliveryStrategy(frameBytes, input, zeroFrameDecoderTestWrapper); Assert.NotNull(result, "did not decode frame"); byte[] resultBytes = new byte[result.ReadableBytes]; result.ReadBytes(resultBytes); TestContext.WriteLine(resultBytes.ToHexString()); string expected = expectedOutput; TestContext.WriteLine(resultBytes.ToHexString()); Assert.AreEqual(expected, resultBytes.ToHexString()); Assert.AreEqual(input.ReaderIndex, input.WriterIndex, "reader index == writer index"); }
private static IByteBuffer DeliverBlockByBlock(byte[] frame, IByteBuffer input, ZeroFrameDecoderTestWrapper zeroFrameDecoderTestWrapper) { IByteBuffer result = null; for (int i = 0; i < frame.Length; i += 16) { input.WriteBytes(frame.Slice(i, 16)); result = zeroFrameDecoderTestWrapper.Decode(input); if (result != null) { break; } } return(result); }
private static IByteBuffer DeliverAllAtOnceFollowedByACorruptedHeader(byte[] frame, IByteBuffer input, ZeroFrameDecoderTestWrapper zeroFrameDecoderTestWrapper) { byte[] corruptedHeader = new byte[32]; input.WriteBytes(Bytes.Concat(frame, corruptedHeader)); return(zeroFrameDecoderTestWrapper.Decode(input, false)); }
private static IByteBuffer DeliverAllAtOnce(byte[] frame, IByteBuffer input, ZeroFrameDecoderTestWrapper zeroFrameDecoderTestWrapper) { input.WriteBytes(frame); return(zeroFrameDecoderTestWrapper.Decode(input)); }