コード例 #1
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        public void LinkOverwritesCreatedFile_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 file = dir.OpenFile(tempFile);

            using (var f = file.OpenStream())
            {
                f.WriteByte(254);
            }

            Assert.Throws <IOException>(() => dir.LinkFrom(new FileInfo(tempFile)));
            var link = dir.LinkFrom(new FileInfo(tempFile), true);

            Assert.IsAssignableFrom <Link>(link);
            using (var str = link.OpenReadStream())
            {
                Assert.Equal(255, str.ReadByte());
            }
            Assert.Equal(file.FileGuid, link.FileGuid);
        }
コード例 #2
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        public void LinkRename_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();
            var tempFile2 = Path.GetTempFileName();

            using (var str = new FileInfo(tempFile).OpenWrite())
            {
                str.WriteByte(255);
            }

            var link = dir.LinkFrom(new FileInfo(tempFile));

            Guid oldGuid = link.FileGuid;

            Assert.True(dir.ContainsFile(".manifest"));


            link.Rename(tempFile2);
            Assert.Equal(Path.GetFileName(tempFile2), link.Name);
            Assert.Equal(link.FileGuid, dir.OpenFile(tempFile2).FileGuid);
            Assert.True(new FileInfo(tempFile).Exists);
        }
コード例 #3
0
        public void LinkFromDirectoryNotFoundPath_Test()
        {
            var fs   = new PhysicalFileSystem();
            var temp = Path.GetTempPath();

            var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();

            Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(new DirectoryInfo(Path.GetRandomFileName())));
        }
コード例 #4
0
        public void LinkFromInvalidFilePath_Test()
        {
            var fs            = new PhysicalFileSystem();
            var temp          = Path.GetTempPath();
            var unmanagedFile = Path.GetTempFileName();
            var pfs           = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();

            System.IO.File.WriteAllText(unmanagedFile, "Hello World!");
            Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(new FileInfo(unmanagedFile), "$$::\0^"));
        }
コード例 #5
0
        public void LinkFromNonExistentFilePath_Test()
        {
            var fs            = new PhysicalFileSystem();
            var temp          = Path.GetTempPath();
            var unmanagedFile = Path.GetTempFileName();

            System.IO.File.Delete(unmanagedFile);
            var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();

            Assert.Throws <FileNotFoundException>(() => dir.LinkFrom(new FileInfo(unmanagedFile)));
        }
コード例 #6
0
        public void LinkFromFile_Test()
        {
            var fs            = new PhysicalFileSystem();
            var temp          = Path.GetTempPath();
            var unmanagedFile = Path.GetTempFileName();
            var pfs           = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();

            System.IO.File.WriteAllText(unmanagedFile, "Hello World!");
            var linkedFile = dir.LinkFrom(new FileInfo(unmanagedFile));

            Assert.Equal("Hello World!", linkedFile.ReadAllText());
            Assert.Equal(linkedFile.FileGuid, dir.OpenFile(Path.GetFileName(unmanagedFile)).FileGuid);
        }
コード例 #7
0
        public void LinkFromDirectoryInvalidPath_Test()
        {
            var fs      = new PhysicalFileSystem();
            var temp    = Path.GetTempPath();
            var dirInfo = System.IO.Directory.CreateDirectory(Path.Combine(temp, Path.GetRandomFileName()));

            dirInfo.CreateSubdirectory("Subdirectorytest");
            var newFile = new FileInfo(Path.Combine(dirInfo.FullName, Path.GetRandomFileName()));

            System.IO.File.WriteAllText(newFile.FullName, "Hello World!");

            var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();
            Assert.Throws <DirectoryNotFoundException>(() => dir.LinkFrom(dirInfo, "$$::\0^"));
        }
コード例 #8
0
        public void LinkFromDirectory_Test()
        {
            var fs      = new PhysicalFileSystem();
            var temp    = Path.GetTempPath();
            var dirInfo = System.IO.Directory.CreateDirectory(Path.Combine(temp, Path.GetRandomFileName()));

            dirInfo.CreateSubdirectory("Subdirectorytest");
            var newFile = new FileInfo(Path.Combine(dirInfo.FullName, Path.GetRandomFileName()));

            System.IO.File.WriteAllText(newFile.FullName, "Hello World!");

            var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp));

            using var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")).AsDisposable();

            var linkedDir = dir.LinkFrom(dirInfo);

            Assert.True(linkedDir.ContainsDirectory("Subdirectorytest"));
            Assert.Equal("Hello World!", linkedDir.OpenFile(Path.GetFileName(newFile.FullName)).ReadAllText());
        }
コード例 #9
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        public async Task FileOverwritesLinkAsync_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), true);

            using (var str = link.OpenReadStream())
            {
                Assert.Equal(255, str.ReadByte());
            }

            Assert.Throws <IOException>(() => dir.CopyFrom(new FileInfo(tempFile)));
            var file = await dir.CopyFromAsync(new FileInfo(tempFile), true);

            using (var f = file.OpenStream(FileMode.Create, FileAccess.Write))
            {
                f.WriteByte(254);
            }

            using (var f = file.OpenReadStream())
                using (var s = new FileInfo(tempFile).OpenRead())
                {
                    var fbyte = f.ReadByte();
                    var abyte = s.ReadByte();
                    Assert.NotEqual(fbyte, abyte);
                    Assert.Equal(254, fbyte);
                    Assert.Equal(255, abyte);
                }
            Assert.Equal(file.FileGuid, link.FileGuid);
        }
コード例 #10
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        public void LinkDelete_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));

            link.Delete();
            Assert.True(new FileInfo(tempFile).Exists);
            using (var str = new FileInfo(tempFile).OpenRead())
            {
                Assert.Equal(255, str.ReadByte());
            }
        }
コード例 #11
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        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());
            }
        }
コード例 #12
0
ファイル: LinkTests.cs プロジェクト: Krashner/snowflake
        public void DirectoryLinkFromFileInfo_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));

            using (var str = link.OpenReadStream())
            {
                Assert.Equal(255, str.ReadByte());
            }

            Assert.Throws <IOException>(() => dir.CopyFrom(new FileInfo(tempFile)));
            Assert.True(dir.ContainsFile(Path.GetFileName(tempFile)));
        }