public async Task ExtractZipJobQueue_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); string test = Path.GetRandomFileName(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); var dirToCopy = new DirectoryInfo(temp).CreateSubdirectory(Path.GetRandomFileName()); var subDirToCopy = dirToCopy.CreateSubdirectory(Path.GetRandomFileName()); string fileName; using (var file = System.IO.File.Create(Path.Combine(subDirToCopy.FullName, Path.GetRandomFileName()))) { fileName = Path.GetFileName(file.Name); await file.WriteAsync(Data, 0, Data.Length); } var subSubDirToCopy = subDirToCopy .CreateSubdirectory(Path.GetRandomFileName()); string zipFile = Path.GetTempFileName(); System.IO.File.Delete(zipFile); // hack to get around file existing. ZipFile.CreateFromDirectory(dirToCopy.FullName, zipFile, CompressionLevel.Fastest, true); var tq = new AsyncJobQueue <TaskResult <IFile> >(); var token = await tq.QueueJob(EmitZipResult(zipFile, dir)); await foreach (var res in tq.AsEnumerable(token)) { var val = await res; if (res.Error != null) { throw res.Error.InnerException; } } Assert.True(dir.ContainsDirectory(dirToCopy.Name), "Did not extract parent successfully"); Assert.True(dir.OpenDirectory(dirToCopy.Name).OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not copy file successfully"); using (var file = dir.OpenDirectory(dirToCopy.Name).OpenDirectory(subDirToCopy.Name).OpenFile(fileName).OpenStream()) { Assert.Equal(Data.Length, file.Length); } Assert.True(dir.OpenDirectory(dirToCopy.Name).OpenDirectory(subDirToCopy.Name).ContainsDirectory(subSubDirToCopy.Name), "Did not copy nested folder successfully"); dir.OpenDirectory(dirToCopy.Name).OpenDirectory(subDirToCopy.Name).OpenFile(fileName).Delete(); Assert.False(dir.OpenDirectory(dirToCopy.Name).OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not cleanup file successfully"); try { // nothing to do with tests here if this fails System.IO.File.Delete(zipFile); } catch { } }
public void ProjectionSuccess_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); var file1 = dir.OpenFile("MyFirstFile"); file1.OpenStream().Close(); var file2 = dir.OpenFile("MySecondFile"); file2.OpenStream().Close(); var dirProj = dir.OpenDirectory("MyDirectory"); dirProj .OpenFile("MyThirdFile") .OpenStream().Close(); var p = new DirectoryProjection(); p.Project("RootFile", file1) .Enter("SomeDirectory") .Project("project1", file1) .Enter("DeeperDirectory") .Project("project2", file2) .Project("deeperThree", dirProj) .Exit() .Project("project3", file2) .Exit(); using var mountdir = dir.OpenDirectory("mountPoint") .AsDisposable(); var mountedDirectory = p.Mount(mountdir); Assert.True(mountedDirectory.ContainsDirectory("SomeDirectory")); Assert.True(mountedDirectory.ContainsFile("RootFile")); var someDir = mountedDirectory.OpenDirectory("SomeDirectory"); Assert.True(someDir.ContainsFile("project1")); Assert.True(someDir.ContainsDirectory("DeeperDirectory")); Assert.True(someDir.ContainsFile("project3")); var deeper = someDir.OpenDirectory("DeeperDirectory"); Assert.True(deeper.ContainsDirectory("deeperThree")); Assert.True(deeper.ContainsFile("project2")); var deeperLink = deeper.OpenDirectory("deeperThree"); Assert.True(deeperLink.ContainsFile("MyThirdFile")); }
public void CollectionToAbstractConfigurationNodeXmlSerializer_Test() { var configuration = new ConfigurationCollection <ExampleConfigurationCollection>(new ConfigurationValueCollection()); var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); dir.OpenDirectory("program") .OpenFile("RMGE01.wbfs").OpenStream().Close(); configuration.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1152X648; var context = new ConfigurationTraversalContext(("game", dir)); var list = context.TraverseCollection(configuration); IAbstractConfigurationNode dolphinList = list["#dolphin"]; var xmlSerializer = new SimpleXmlConfigurationSerializer("Config"); string outputXml = xmlSerializer.Visit(dolphinList); XDocument doc = XDocument.Parse(outputXml); Assert.NotEmpty(doc.Nodes()); }
public void DirectoryPath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); Assert.Equal(NormalizePath(dir.GetPath().FullName), NormalizePath(Path.Combine(temp, "test"))); Assert.Equal(NormalizePath(dir.OpenDirectory("dir1").GetPath().FullName), NormalizePath(Path.Combine(temp, "test", "dir1"))); Assert.Equal(NormalizePath(dir.OpenDirectory("test").OpenDirectory("test").GetPath().FullName), NormalizePath(Path.Combine(temp, "test", "test", "test"))); }
public void DirectoryPath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); Assert.Equal(NormalizePath(dir.UnsafeGetPath().FullName), // lgtm [cs/call-to-obsolete-method] NormalizePath(Path.Combine(temp, "test"))); #pragma warning disable CS0618 // Type or member is obsolete Assert.Equal(NormalizePath(dir.OpenDirectory("dir1").UnsafeGetPath().FullName), // lgtm [cs/call-to-obsolete-method] NormalizePath(Path.Combine(temp, "test", "dir1"))); Assert.Equal(NormalizePath(dir.OpenDirectory("test").OpenDirectory("test").UnsafeGetPath().FullName), // lgtm [cs/call-to-obsolete-method] NormalizePath(Path.Combine(temp, "test", "test", "test"))); #pragma warning restore CS0618 // Type or member is obsolete }
public async Task CopyDirectoryJobQueue_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var dirToCopy = new DirectoryInfo(temp).CreateSubdirectory(Path.GetRandomFileName()); var subDirToCopy = dirToCopy.CreateSubdirectory(Path.GetRandomFileName()); string fileName; using (var file = System.IO.File.Create(Path.Combine(subDirToCopy.FullName, Path.GetRandomFileName()))) { fileName = Path.GetFileName(file.Name); await file.WriteAsync(Data, 0, Data.Length); file.Close(); } var subSubDirToCopy = subDirToCopy .CreateSubdirectory(Path.GetRandomFileName()); var tq = new AsyncJobQueue <TaskResult <IFile> >(); var token = await tq.QueueJob(EmitCopyDirResult(dirToCopy, dir)); await foreach (var x in tq.AsEnumerable(token)) { } Assert.True(dir.ContainsDirectory(subDirToCopy.Name), "Did not copy parent successfully"); Assert.True(dir.OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not copy file successfully"); using (var file = dir.OpenDirectory(subDirToCopy.Name).OpenFile(fileName).OpenStream()) { Assert.Equal(Data.Length, file.Length); } Assert.True(dir.OpenDirectory(subDirToCopy.Name).ContainsDirectory(subSubDirToCopy.Name), "Did not copy nested folder successfully"); dir.OpenDirectory(subDirToCopy.Name).OpenFile(fileName).Delete(); Assert.False(dir.OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not copy file successfully"); }
public async Task CopyDirectory_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var dirToCopy = new DirectoryInfo(temp).CreateSubdirectory(Path.GetRandomFileName()); var subDirToCopy = dirToCopy.CreateSubdirectory(Path.GetRandomFileName()); string fileName; using (var file = System.IO.File.Create(Path.Combine(subDirToCopy.FullName, Path.GetRandomFileName()))) { fileName = Path.GetFileName(file.Name); await file.WriteAsync(Data, 0, Data.Length); file.Close(); } var subSubDirToCopy = subDirToCopy .CreateSubdirectory(Path.GetRandomFileName()); // Execute the results. await foreach (var res in EmitCopyDirResult(dirToCopy, dir)) { Assert.Equal(await res.Description, $"Copied {(await res).Name} to directory {dir.Name}"); Assert.Equal(await res.Description, $"Copied {(await res).Name} to directory {dir.Name}"); } Assert.True(dir.ContainsDirectory(subDirToCopy.Name), "Did not copy parent successfully"); Assert.True(dir.OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not copy file successfully"); using (var file = dir.OpenDirectory(subDirToCopy.Name).OpenFile(fileName).OpenStream()) { Assert.Equal(Data.Length, file.Length); } Assert.True(dir.OpenDirectory(subDirToCopy.Name).ContainsDirectory(subSubDirToCopy.Name), "Did not copy nested folder successfully"); dir.OpenDirectory(subDirToCopy.Name).OpenFile(fileName).Delete(); Assert.False(dir.OpenDirectory(subDirToCopy.Name).ContainsFile(fileName), "Did not copy file successfully"); }
public void DirectoryCanNotMountSubprojection_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); using var mountdir = dir.OpenDirectory("mountPoint") .AsDisposable(); Assert.Throws <InvalidOperationException>(() => new DirectoryProjection().Enter("no").Mount(mountdir)); }
public void DirectoryMustBeEmptyToMount_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); using var mountdir = dir.OpenDirectory("mountPoint") .AsDisposable(); mountdir.OpenDirectory("dummydir"); Assert.Throws <IOException>(() => new DirectoryProjection().Mount(mountdir)); }
public void DirectoryDeepCreatePath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var deep = dir.OpenDirectory("test/test"); #pragma warning disable CS0618 // Type or member is obsolete Assert.Equal(NormalizePath(deep.GetPath().FullName), NormalizePath(Path.Combine(temp, "test", "test", "test"))); #pragma warning restore CS0618 // Type or member is obsolete }
public void DirectoryRecursiveFileOpen_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")); var file = dir.OpenFile("test.txt"); file.OpenStream().Close(); dir.OpenDirectory(Path.GetRandomFileName()).OpenFile("test2.txt").OpenStream().Close(); var iter = dir.EnumerateFilesRecursive(); Assert.True(iter.Count() >= 2); }
public void DirectoryReopenAsReadOnly_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); IDirectory dir = new Directory(test, pfs, pfs.GetDirectoryEntry("/")); var file = dir.OpenDirectory("TestInnerDirectory").OpenFile("test.txt"); file.OpenStream().Close(); Assert.Single(dir.AsReadOnly().EnumerateFilesRecursive()); Assert.Throws <FileNotFoundException>(() => dir.AsReadOnly().OpenFile("NonExistentFile")); }
public void DirectoryDelete_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var nested = dir.OpenDirectory("nested"); var nested2 = nested.OpenDirectory("nested2"); nested.Delete(); Assert.Throws <InvalidOperationException>(() => nested.EnumerateFiles()); Assert.Throws <InvalidOperationException>(() => nested2.EnumerateFiles()); }
public void DirectoryRecursiveFileOpen_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var file = dir.OpenFile("test.txt"); Assert.True(dir.ContainsFile(".manifest")); Assert.Equal(file.FileGuid, dir.GetGuid("test.txt")); file.OpenStream().Close(); dir.OpenDirectory("next_test").OpenFile("test2.txt").OpenStream().Close(); var iter = dir.EnumerateFilesRecursive(); Assert.True(iter.Count() >= 2); }
public void DirectoryDeepCreatePath_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); string test = Path.GetRandomFileName(); using var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")).AsDisposable(); var deep = dir.OpenDirectory($"test/test"); #pragma warning disable CS0618 // Type or member is obsolete Assert.Equal(NormalizePath(deep.UnsafeGetPath().FullName), // lgtm [cs/call-to-obsolete-method] NormalizePath(Path.Combine(temp, test, "test", "test"))); #pragma warning restore CS0618 // Type or member is obsolete }
public void FlattenVisitor_Test() { var configuration = new ConfigurationCollection <ExampleConfigurationCollection>(new ConfigurationValueCollection()); var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var test = Path.GetRandomFileName(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory(test, pfs, pfs.GetDirectoryEntry("/")); dir.OpenDirectory("program") .OpenFile("RMGE01.wbfs").OpenStream().Close(); configuration.Configuration.ExampleConfiguration.FullscreenResolution = FullscreenResolution.Resolution1152X648; var context = new ConfigurationTraversalContext(("game", dir)); var list = context.TraverseCollection(configuration); IAbstractConfigurationNode dolphinList = list["#dolphin"]; var flattenedList = new FlatteningVisitor().Visit(dolphinList); Assert.Equal(16, ((ListConfigurationNode)flattenedList).Value.Length); }
public void DirectoryCopyLink_Test() { var fs = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory("test", pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); using (var str = new FileInfo(tempFile).OpenWrite()) { str.WriteByte(255); } var link = dir.LinkFrom(new FileInfo(tempFile)); var newLink = dir.OpenDirectory("new").CopyFrom(link); using (var str = newLink.OpenReadStream()) { Assert.Equal(255, str.ReadByte()); } }