public async Task DirectoryCopyFromAsyncManaged_Test() { var fs = new PhysicalFileSystem(); var fs2 = new PhysicalFileSystem(); var temp = Path.GetTempPath(); var pfs = fs.GetOrCreateSubFileSystem(fs.ConvertPathFromInternal(temp)); var dir = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")); var dir2 = new FS.Directory(Path.GetRandomFileName(), pfs, pfs.GetDirectoryEntry("/")); var tempFile = Path.GetTempFileName(); var file = dir.OpenFile(tempFile); Assert.NotEqual(Guid.Empty, file.FileGuid); using (var str = file.OpenStream()) { str.WriteByte(255); }// safe the file var file2 = await dir2.CopyFromAsync(file); Assert.Equal(file.FileGuid, file2.FileGuid); Assert.True(file.Created); Assert.Equal(1, file2.Length); await Assert.ThrowsAsync <IOException>(async() => await dir2.CopyFromAsync(file)); Assert.Equal(1, (await dir2.CopyFromAsync(file, true)).Length); }
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); }