예제 #1
0
        public void ReadAt_MultiplePages_NonZeroOffset()
        {
            const string path = "xxx";
            var msf = new UndisposableMemoryStreamFactory();
            using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf))
            {
                var handle = file.Allocate();
                var data = new byte[8000];
                for (int i = 0; i < 8000; i++) data[i] = (byte)(i % 255);
                file.Write(handle, data, 0, 8000);

                var readData = new byte[4000];
                var readBytes = file.ReadAt(handle, readData, 2000, 4000);
                for (int i = 0; i < 4000; i++) Assert.AreEqual(data[i + 2000], readData[i]);
                Assert.AreEqual((uint)4000, readBytes);
            }
            var stream = msf.Stream;
            stream.AllowDispose = true;
            stream.Dispose();            
        }
예제 #2
0
        public void ReadAt_BufferSmallerThanCount_ExpectsException()
        {
            const string path = "xxx";
            var msf = new UndisposableMemoryStreamFactory();
            using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf))
            {
                var handle = file.Allocate();
                var data = new byte[255];
                for (byte i = 0; i < 255; i++) data[i] = i;
                file.Write(handle, data, 0, 255);

                var readData = new byte[255];
                var readBytes = file.ReadAt(handle, readData, 0, 512);
                for (byte i = 0; i < 255; i++) Assert.AreEqual(i, readData[i]);
                Assert.AreEqual((uint)255, readBytes);
            }
            var stream = msf.Stream;
            stream.AllowDispose = true;
            stream.Dispose();                                    
        }
예제 #3
0
        public void InitializeFile_ReadAt_ExpectsOk()
        {
            const string path = "xxx";
            var msf = new UndisposableMemoryStreamFactory();
            using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf))
            {
                var handle = file.Allocate();
                var data = new byte[255];
                for (byte i = 0; i < 255; i++) data[i] = i;
                file.Write(handle, data, 0, 255);

                var readData = new byte[10];
                file.ReadAt(handle, readData, 10, 10);
                for(byte i=0;i<10;i++) Assert.AreEqual(i + 10, readData[i]);
            }
            var stream = msf.Stream;
            stream.AllowDispose = true;
            stream.Dispose();
        }
예제 #4
0
 public void InitializeFile_Validate_ExpectsOk()
 {
     const string path = "xxx";
     var msf = new UndisposableMemoryStreamFactory();
     using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf)) 
     {
         Assert.IsTrue(file.ValidateCrc());
     }
     var stream = msf.Stream;
     stream.AllowDispose = true;
     stream.Dispose();
 }
예제 #5
0
        public void InitializeFile_VerifyHeader()
        {
            const string path = "xxx";
            var msf = new UndisposableMemoryStreamFactory();
            using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf)) { }
            var stream = msf.Stream;
            var buffer = new byte[4];

            stream.Position = 50;
            stream.Read(buffer, 0, 2);
            ushort version = System.BitConverter.ToUInt16(buffer, 0);
            Assert.AreEqual((ushort)1, version);

            stream.Position = 52;
            stream.Read(buffer, 0, 2);
            ushort pageSize = System.BitConverter.ToUInt16(buffer, 0);
            Assert.AreEqual((ushort)4096, pageSize);

            stream.Position = 54;
            stream.Read(buffer, 0, 2);
            ushort chapterSize = System.BitConverter.ToUInt16(buffer, 0);
            Assert.AreEqual((ushort)4096, chapterSize);

            stream.Position = 60;
            stream.Read(buffer, 0, 4);
            uint firstFreePage = System.BitConverter.ToUInt32(buffer, 0);
            Assert.AreEqual((uint)1, firstFreePage);
            
            stream.AllowDispose = true;
            stream.Dispose();
        }
예제 #6
0
 public void InitializeFile_VerifyLength()
 {
     const string path = "xxx";
     var msf = new UndisposableMemoryStreamFactory();
     using (var file = new CompoundFile(path, new CompoundFile.CompoundFileOptions(), msf)) { }
     var stream = msf.Stream;
     Assert.AreEqual(4096 * 4096, stream.Length);
     stream.AllowDispose = true;
     stream.Dispose();
 }