Example #1
0
 public void AppendTest()
 {
     using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx(true))
         using (var filesystem = new ExFatEntryFilesystem(testEnvironment.PartitionStream))
         {
             var file = filesystem.FindChild(filesystem.RootDirectory, DiskContent.LongContiguousFileName);
             using (var s = filesystem.OpenFile(file, FileAccess.ReadWrite))
             {
                 s.Seek(0, SeekOrigin.End);
                 s.WriteByte(123);
             }
             Assert.AreEqual(file.Length, (long)DiskContent.LongFileSize + 1);
             using (var s2 = filesystem.OpenFile(file, FileAccess.Read))
             {
                 s2.Seek(-1, SeekOrigin.End);
                 Assert.AreEqual(123, s2.ReadByte());
                 Assert.AreEqual(-1, s2.ReadByte());
             }
         }
 }
 public void UpdateLastAccessTime()
 {
     using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx())
         using (var filesystem = new ExFatEntryFilesystem(testEnvironment.PartitionStream))
         {
             var file    = filesystem.FindChild(filesystem.RootDirectory, DiskContent.LongContiguousFileName);
             var access0 = file.LastAccessTime;
             using (var stream = filesystem.OpenFile(file, FileAccess.Read))
             {
             }
             var access1 = file.LastAccessTime;
             Assert.IsTrue(access1 > access0);
             var file2   = filesystem.FindChild(filesystem.RootDirectory, DiskContent.LongContiguousFileName);
             var access2 = file2.LastAccessTime;
             Assert.AreEqual(access1, access2);
         }
 }
 public void ReadFile()
 {
     using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx())
         using (var filesystem = new ExFatEntryFilesystem(testEnvironment.PartitionStream))
         {
             var file = filesystem.FindChild(filesystem.RootDirectory, DiskContent.LongContiguousFileName);
             var vb   = new byte[sizeof(ulong)];
             using (var stream = filesystem.OpenFile(file, FileAccess.Read))
             {
                 for (ulong offset = 0; offset < DiskContent.LongFileSize; offset += 8)
                 {
                     stream.Read(vb, 0, vb.Length);
                     var v = LittleEndian.ToUInt64(vb);
                     Assert.AreEqual(v, DiskContent.GetLongContiguousFileNameOffsetValue(offset));
                 }
             }
         }
 }
Example #4
0
        public void CreateEmptyFileTest()
        {
            using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx(true))
            {
                using (var filesystem = new ExFatEntryFilesystem(testEnvironment.PartitionStream))
                {
                    using (var s = filesystem.CreateFile(filesystem.RootDirectory, "a.txt"))
                    {
                    }

                    var f = filesystem.FindChild(filesystem.RootDirectory, "a.txt");
                    using (var s2 = filesystem.OpenFile(f, FileAccess.Read))
                    {
                        Assert.AreEqual(-1, s2.ReadByte());
                    }
                }
            }
        }
Example #5
0
 public void TruncateFileTest()
 {
     using (var testEnvironment = StreamTestEnvironment.FromExistingVhdx(true))
     {
         using (var filesystem = new ExFatEntryFilesystem(testEnvironment.PartitionStream))
         {
             var f = filesystem.FindChild(filesystem.RootDirectory, DiskContent.LongContiguousFileName);
             using (var s = filesystem.OpenFile(f, FileAccess.ReadWrite))
             {
                 s.SetLength(16);
                 s.Seek(0, SeekOrigin.Begin);
                 var b = new byte[8];
                 Assert.AreEqual(8, s.Read(b, 0, b.Length));
                 Assert.AreEqual(DiskContent.GetLongContiguousFileNameOffsetValue(0), LittleEndian.ToUInt64(b));
                 Assert.AreEqual(8, s.Read(b, 0, b.Length));
                 Assert.AreEqual(DiskContent.GetLongContiguousFileNameOffsetValue(8), LittleEndian.ToUInt64(b));
                 Assert.AreEqual(0, s.Read(b, 0, b.Length));
             }
         }
     }
 }