public void Delete_WhereRecurseIsTrueAndDirectoryIsEmpty_CallsApiCorrectly(bool supportsPatternSearch) { var fixture = DokanOperationsFixture.Instance; var path = fixture.DirectoryName.AsRootedPath(); #if LOGONLY fixture.SetupAny(); #else fixture.ExpectCreateFile(path, ReadAttributesAccess, ReadWriteShare, FileMode.Open); fixture.ExpectGetFileInformation(path, FileAttributes.Directory); fixture.ExpectOpenDirectory(path); if (supportsPatternSearch) { fixture.ExpectFindFilesWithPattern(path, "*", DokanOperationsFixture.GetEmptyDirectoryDefaultFiles()); } else { fixture.ExpectFindFilesWithPatternToFail(path, "*", DokanResult.NotImplemented); fixture.ExpectFindFiles(path, DokanOperationsFixture.GetEmptyDirectoryDefaultFiles()); } fixture.ExpectOpenDirectory(path, DeleteFromDirectoryAccess); fixture.ExpectDeleteDirectory(path); #endif var sut = new DirectoryInfo(fixture.DirectoryName.AsDriveBasedPath()); sut.Delete(true); #if !LOGONLY fixture.Verify(); #endif }
public void Delete_WhereRecurseIsTrueAndDirectoryIsNonempty_CallsApiCorrectly() { var fixture = DokanOperationsFixture.Instance; string path = DokanOperationsFixture.DirectoryName.AsRootedPath(), subFileName = "SubFile.ext", subFilePath = Path.DirectorySeparatorChar + subFileName; #if LOGONLY fixture.SetupAny(); #else fixture.SetupCreateFile(path, ReadAttributesAccess, ReadWriteShare, FileMode.Open); fixture.SetupGetFileInformation(path, FileAttributes.Directory); fixture.SetupOpenDirectory(path); fixture.SetupFindFiles(path, DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(new[] { new FileInformation() { FileName = subFileName, Attributes = FileAttributes.Normal, Length = 100, CreationTime = DateTime.Today, LastWriteTime = DateTime.Today, LastAccessTime = DateTime.Today } }).ToArray()); fixture.SetupCreateFile(path + subFilePath, DeleteAccess, ReadWriteShare, FileMode.Open, deleteOnClose: true); fixture.SetupGetFileInformation(path + subFilePath, FileAttributes.Normal); fixture.SetupDeleteFile(path + subFilePath); fixture.SetupDeleteDirectory(path, true); #endif var sut = new DirectoryInfo(DokanOperationsFixture.DirectoryName.AsDriveBasedPath()); sut.Delete(true); #if !LOGONLY fixture.VerifyAll(); #endif }
public void Delete_WhereRecurseIsTrueAndDirectoryIsNonempty_CallsApiCorrectly() { var supportsPatternSearch = bool.Parse((string)TestContext.DataRow["SupportsPatternSearch"]); var fixture = DokanOperationsFixture.Instance; string path = fixture.DirectoryName.AsRootedPath(), subFileName = "SubFile.ext", subFilePath = Path.DirectorySeparatorChar + subFileName; #if LOGONLY fixture.SetupAny(); #else fixture.ExpectCreateFile(path, ReadAttributesAccess, ReadWriteShare, FileMode.Open); fixture.ExpectGetFileInformation(path, FileAttributes.Directory); fixture.ExpectOpenDirectory(path); if (supportsPatternSearch) { fixture.ExpectFindFilesWithPattern(path, "*", DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(new[] { new FileInformation() { FileName = subFileName, Attributes = FileAttributes.Normal, Length = 100, CreationTime = DateTime.Today, LastWriteTime = DateTime.Today, LastAccessTime = DateTime.Today } }).ToArray()); } else { fixture.ExpectFindFilesWithPatternToFail(path, "*", DokanResult.NotImplemented); fixture.ExpectFindFiles(path, DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(new[] { new FileInformation() { FileName = subFileName, Attributes = FileAttributes.Normal, Length = 100, CreationTime = DateTime.Today, LastWriteTime = DateTime.Today, LastAccessTime = DateTime.Today } }).ToArray()); } fixture.ExpectCreateFile(path + subFilePath, DeleteAccess, ReadWriteShare, FileMode.Open, deleteOnClose: true); fixture.ExpectGetFileInformation(path + subFilePath, FileAttributes.Normal); fixture.ExpectDeleteFile(path + subFilePath); fixture.ExpectOpenDirectory(path, DeleteFromDirectoryAccess); fixture.ExpectDeleteDirectory(path); #endif var sut = new DirectoryInfo(fixture.DirectoryName.AsDriveBasedPath()); sut.Delete(true); #if !LOGONLY fixture.Verify(); #endif }
public void GetFileSystemInfos_OnRootDirectory_WhereSearchOptionIsAllDirectories_CallsApiCorrectly() { var fixture = DokanOperationsFixture.Instance; var pathsAndItems = new[] { new { Path = DokanOperationsFixture.RootName, Items = DokanOperationsFixture.RootDirectoryItems }, new { Path = DokanOperationsFixture.DirectoryName.AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(DokanOperationsFixture.DirectoryItems).ToArray() }, new { Path = Path.Combine(DokanOperationsFixture.DirectoryName, DokanOperationsFixture.SubDirectoryName).AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(DokanOperationsFixture.SubDirectoryItems).ToArray() }, new { Path = DokanOperationsFixture.Directory2Name.AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(DokanOperationsFixture.Directory2Items).ToArray() }, new { Path = Path.Combine(DokanOperationsFixture.Directory2Name, DokanOperationsFixture.SubDirectory2Name).AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().ToArray() } }; #if LOGONLY fixture.SetupAny(); #else foreach (var pathAndItem in pathsAndItems) { fixture.SetupOpenDirectory(pathAndItem.Path); fixture.SetupFindFiles(pathAndItem.Path, pathAndItem.Items); } #endif var sut = new DirectoryInfo(DokanOperationsFixture.RootName.AsDriveBasedPath()); #if LOGONLY Assert.IsNotNull(sut.GetFileSystemInfos(), nameof(sut.GetFileSystemInfos)); Console.WriteLine(sut.GetFileSystemInfos().Length); #else CollectionAssert.AreEqual( pathsAndItems.Select(p => p.Items.Where(f => !f.FileName.All(c => c == '.'))) .Aggregate((i1, i2) => i1.Union(i2).ToArray()) .Select(i => i.FileName).ToArray(), sut.GetFileSystemInfos("*", SearchOption.AllDirectories).Select(f => f.Name).ToArray(), nameof(sut.GetFileSystemInfos)); fixture.VerifyAll(); #endif }
public void GetFileSystemInfos_OnRootDirectory_WhereSearchOptionIsAllDirectories_CallsApiCorrectly() { var supportsPatternSearch = bool.Parse((string)TestContext.DataRow["SupportsPatternSearch"]); var fixture = DokanOperationsFixture.Instance; var pathsAndItems = new[] { new { Path = DokanOperationsFixture.RootName, Items = fixture.RootDirectoryItems }, new { Path = fixture.DirectoryName.AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(fixture.DirectoryItems).ToArray() }, new { Path = Path.Combine(fixture.DirectoryName, fixture.SubDirectoryName).AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(fixture.SubDirectoryItems).ToArray() }, new { Path = fixture.Directory2Name.AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().Concat(fixture.Directory2Items).ToArray() }, new { Path = Path.Combine(fixture.Directory2Name, fixture.SubDirectory2Name).AsRootedPath(), Items = DokanOperationsFixture.GetEmptyDirectoryDefaultFiles().ToArray() } }; #if LOGONLY fixture.SetupAny(); #else foreach (var pathAndItem in pathsAndItems) { fixture.ExpectOpenDirectory(pathAndItem.Path); if (supportsPatternSearch) { fixture.ExpectFindFilesWithPattern(pathAndItem.Path, "*", pathAndItem.Items); } else { fixture.ExpectFindFilesWithPatternToFail(pathAndItem.Path, "*", DokanResult.NotImplemented); fixture.ExpectFindFiles(pathAndItem.Path, pathAndItem.Items); } } #endif var sut = new DirectoryInfo(DokanOperationsFixture.RootName.AsDriveBasedPath()); #if LOGONLY Assert.IsNotNull(sut.GetFileSystemInfos(), nameof(sut.GetFileSystemInfos)); Console.WriteLine(sut.GetFileSystemInfos().Length); #else CollectionAssert.AreEqual( pathsAndItems.Select(p => p.Items.Where(f => f.FileName.Any(c => c != '.'))).Aggregate((i1, i2) => i1.Union(i2).ToArray()).Select(i => i.FileName).ToArray(), sut.GetFileSystemInfos("*", SearchOption.AllDirectories).Select(f => f.Name).ToArray(), nameof(sut.GetFileSystemInfos)); fixture.Verify(); #endif }
public void Delete_WhereRecurseIsTrueAndDirectoryIsEmpty_CallsApiCorrectly() { var fixture = DokanOperationsFixture.Instance; string path = DokanOperationsFixture.DirectoryName.AsRootedPath(); #if LOGONLY fixture.SetupAny(); #else fixture.SetupCreateFile(path, ReadAttributesAccess, ReadWriteShare, FileMode.Open); fixture.SetupGetFileInformation(path, FileAttributes.Directory); fixture.SetupOpenDirectory(path); fixture.SetupFindFiles(path, DokanOperationsFixture.GetEmptyDirectoryDefaultFiles()); fixture.SetupDeleteDirectory(path, true); #endif var sut = new DirectoryInfo(DokanOperationsFixture.DirectoryName.AsDriveBasedPath()); sut.Delete(true); #if !LOGONLY fixture.VerifyAll(); #endif }