public void WriteReopenReadTest()
        {
            using (var f = new TestPhysicalFile())
            {
                var testString = "TestContent1234567890";
                var bytes      = Encoding.UTF8.GetBytes(testString);
                var length     = bytes.Length;
                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    using (var stream = fs.GetRoot().CreateFile("TestFile.txt")
                                        .Open(FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        Assert.IsTrue(stream.CanWrite, "Stream does not allow writing");
                        stream.Write(bytes, 0, bytes.Length);
                        Assert.AreEqual(length, stream.Position, "Stream position is wrong");
                    }
                }

                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    using (var stream = fs.GetRoot().GetFiles().First().Open(FileMode.Open, FileAccess.Read))
                    {
                        Assert.AreEqual(length, stream.Length, "Stream length is wrong");
                        Assert.IsFalse(stream.CanWrite, "Stream should not allow writing");
                        var buffer         = new byte[4096];
                        var readBytesCount = stream.Read(buffer, 0, (int)stream.Length);
                        Assert.AreEqual(length, readBytesCount, "Wrong bytes number is read");
                        var readBytes  = buffer.Take(readBytesCount).ToArray();
                        var readString = Encoding.UTF8.GetString(readBytes);
                        Assert.AreEqual(testString, readString, "Read string is wrong");
                    }
                }
            }
        }
 internal BaseVirtualEntity(InternalFileSystem fileSystem, BaseEntry entry)
 {
     _entry     = entry;
     FileSystem = fileSystem;
     Id         = entry.Id;
     CreatedAt  = entry.CreationTime;
 }
        public async Task MoveFileTest()
        {
            using (var f = new TestPhysicalFile())
            {
                var testString = "1234567890";
                var dirAname   = "dir_A";
                var dirBname   = "dir_B";
                var filename   = "testfile.txt";
                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var file = fs.GetRoot().CreateDirectory(dirAname).CreateFile(filename);
                    file.WriteAllText(testString);
                    var dirB = fs.GetRoot().CreateDirectory(dirBname);
                    await file.MoveTo(dirB, args => { }, CancellationToken.None);
                }

                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var dirA = fs.GetRoot().GetDirectories(false, dirAname).FirstOrDefault();
                    Assert.IsNotNull(dirA, "Created directory A not found");
                    var dirB = fs.GetRoot().GetDirectories(false, dirBname).FirstOrDefault();
                    Assert.IsNotNull(dirB, "Created directory B not found");

                    var aFiles = dirA.GetFiles().ToArray();
                    var bFiles = dirB.GetFiles().ToArray();
                    Assert.AreEqual(0, aFiles.Length, "Dir A should not contain any files");
                    Assert.AreEqual(1, bFiles.Length, "Dir B should contain 1 file");

                    var bFileName = VirtualPath.GetFileName(bFiles[0].Name);
                    Assert.AreEqual(filename, bFileName, "File names mismatch");
                    var BfileContent = bFiles[0].ReadAllText();
                    Assert.AreEqual(testString, BfileContent, "File B content mismatch");
                }
            }
        }
示例#4
0
 public void T06_CreateDirectoryTest()
 {
     using (var f = new TestPhysicalFile())
         using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
         {
             var directory = fs.GetRoot().CreateDirectory("testDirectory");
             Assert.IsNotNull(directory, "Unable to create a directory");
             Assert.AreEqual($"{VirtualPath.Separator}testDirectory", directory.Name, "Created directory has wrong name");
         }
 }
示例#5
0
 public void T04_CreateFileTest()
 {
     using (var f = new TestPhysicalFile())
         using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
         {
             var file = fs.GetRoot().CreateFile("testfile.txt");
             Assert.IsNotNull(file, "Unable to create a file");
             Assert.AreEqual($"{VirtualPath.Separator}testfile.txt", file.Name, "Created file has wrong name");
         }
 }
示例#6
0
 public void T02_RootTest()
 {
     using (var f = new TestPhysicalFile())
         using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
         {
             var root = fs.GetRoot();
             Assert.IsNotNull(root, "Unable to get root directory");
             Assert.AreEqual(string.Empty, root.Name, "Root directory has wrong name");
         }
 }
示例#7
0
 public void T01_InitializeTest()
 {
     using (var f = new TestPhysicalFile())
         using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
         {
             Assert.IsTrue(File.Exists(f.Filename), "FS file was not created");
             var file = new FileInfo(f.Filename);
             Assert.IsTrue(file.Length > 0, "FS file is empty");
         }
 }
示例#8
0
        public void T11_RenameDirectoryReopenTest()
        {
            using (var f = new TestPhysicalFile())
            {
                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var directory = fs.GetRoot().CreateDirectory("testDirectory");
                    directory.Name = "renamedDirectory";
                }

                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var directory = fs.GetRoot().GetDirectories().FirstOrDefault();
                    Assert.IsNotNull(directory, "Unable to get saved directory");

                    Assert.AreEqual($"{VirtualPath.Separator}renamedDirectory", directory.Name, "Saved directory has wrong name");
                }
            }
        }
示例#9
0
        public void T09_RenameFileReopenTest()
        {
            using (var f = new TestPhysicalFile())
            {
                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var file = fs.GetRoot().CreateFile("testfile.txt");
                    file.Name = "renamedfile.txt";
                }

                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var file = fs.GetRoot().GetFiles().FirstOrDefault();
                    Assert.IsNotNull(file, "Unable to get saved file");

                    Assert.AreEqual($"{VirtualPath.Separator}renamedfile.txt", file.Name, "Saved file has wrong name");
                }
            }
        }
示例#10
0
        public void T05_CreateFilesAndReopenTest()
        {
            using (var f = new TestPhysicalFile())
            {
                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    for (var i = 0; i < 100; i++)
                    {
                        fs.GetRoot().CreateFile($"testfile{i}.txt");
                    }
                }

                using (var fs = new InternalFileSystem(SynchronizationContext.Current, f.Filename, VirtualDriveParameters.Default))
                {
                    var files = fs.GetRoot().GetFiles().ToList();
                    Assert.AreEqual(100, files.Count, "Unable to get saved files");
                    for (var i = 0; i < 100; i++)
                    {
                        var file = files[i];
                        Assert.AreEqual($"{VirtualPath.Separator}testfile{i}.txt", file.Name, "Created file has wrong name");
                    }
                }
            }
        }