WriteBytes() 공개 메소드

public WriteBytes ( long offset, byte value ) : void
offset long
value byte
리턴 void
예제 #1
0
		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);
				}
			}
		}