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
            {
            }
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 4
0
        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")));
        }
Ejemplo n.º 5
0
        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
        }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 7
0
        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");

        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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"));
        }
Ejemplo n.º 13
0
        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());
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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());
            }
        }