public void ShouldSerializeMemory() { // preparing some random data const int size = 128 * 1024 * 1024; const int bufCount = 30; const int bufSize = 100 * 1024; var random = new Random(); var buffers = new List<Tuple<int, byte[]>>(bufCount); for(var i = 0; i < bufCount; i++) { var buffer = new byte[bufSize]; random.NextBytes(buffer); int address; do { address = random.Next(size - bufSize); } while (buffers.Any(x => address >= (x.Item1 - bufSize) && address <= (x.Item1 + bufSize))); buffers.Add(new Tuple<int, byte[]>(address, buffer)); } using(var memory = new MappedMemory(size)) { foreach(var buf in buffers) { memory.WriteBytes(buf.Item1, buf.Item2); } serializer.Serialize(memory, stream); } RewindStream(); using(var memory = serializer.Deserialize<MappedMemory>(stream)) { foreach(var buf in buffers) { var bufCopy = memory.ReadBytes(buf.Item1, bufSize); CollectionAssert.AreEqual(bufCopy, buf.Item2); } } }