public void SparseMemoryBufferClear() { SparseMemoryBuffer memoryBuffer = new SparseMemoryBuffer(10); byte[] buffer = new byte[20]; memoryBuffer.Write(0, buffer, 0, 20); Assert.Equal(2, memoryBuffer.AllocatedChunks.Count()); memoryBuffer.Clear(0, 20); Assert.Equal(0, memoryBuffer.AllocatedChunks.Count()); memoryBuffer.Write(0, buffer, 0, 15); Assert.Equal(2, memoryBuffer.AllocatedChunks.Count()); memoryBuffer.Clear(0, 15); Assert.Equal(1, memoryBuffer.AllocatedChunks.Count()); }
protected override void Read(byte[] buffer, int offset, out int length) { base.Read(buffer, offset, out length); uint dataLength = Utilities.ToUInt32LittleEndian(buffer, offset + 0x10); ushort dataOffset = Utilities.ToUInt16LittleEndian(buffer, offset + 0x14); _indexedFlag = buffer[offset + 0x16]; if (dataOffset + dataLength > length) { throw new IOException("Corrupt attribute, data outside of attribute"); } _memoryBuffer = new SparseMemoryBuffer(1024); _memoryBuffer.Write(0, buffer, offset + dataOffset, (int)dataLength); }
public void TargetPath_Works() { var content = Encoding.UTF8.GetBytes("/var/lib/discutils.so"); var buffer = new SparseMemoryBuffer(0x100); buffer.Write(0, content, 0, content.Length); var symlinkMock = new Mock <Symlink>(MockBehavior.Strict, new Context(), new CatalogNodeId(0), new CatalogFileInfo()); symlinkMock.Setup(s => s.FileContent).Returns(buffer); var symlink = symlinkMock.Object; Assert.Equal(@"\var\lib\discutils.so", symlink.TargetPath); // Calling .TargetPath twice will excercise the caching code path. Assert.Equal(@"\var\lib\discutils.so", symlink.TargetPath); }