public void DecodeArrayBlock(IList <IList <int> > expectedValue, int expectedLength, byte[] value) { using (var stream = new MemoryStream(value)) using (var decoder = new BinaryDecoder(stream)) { var decode = new List <IList <int> >(); var read = true; do { read = decoder.ReadArrayBlock(s => s.ReadInt(), out var block); decode.Add(block); }while (read); Assert.AreEqual(expectedLength, stream.Position, "Decode offset error"); Assert.AreEqual(expectedValue, decode); stream.Seek(0, SeekOrigin.Begin); decoder.SkipArray(s => s.SkipInt()); Assert.AreEqual(expectedLength, stream.Position, "Skip offset error"); } }