private void Directory_GetDirectories_RelativePath(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); var currentDirectory = tempRoot.Directory.Parent.FullName; Environment.CurrentDirectory = currentDirectory; Console.WriteLine("Input Directory Path: [{0}]\n", currentDirectory); var relativeFolder = folder.Parent.Name + @"\" + folder.Name; var systemIOCollection = System.IO.Directory.GetDirectories(relativeFolder, "*", System.IO.SearchOption.AllDirectories); var alphaFSCollection = Alphaleonis.Win32.Filesystem.Directory.GetDirectories(relativeFolder, "*", System.IO.SearchOption.AllDirectories); var folderCount = 0; foreach (var fso in alphaFSCollection) { Console.WriteLine("\t#{0:000}\t{1}", ++folderCount, fso); } CollectionAssert.AreEquivalent(systemIOCollection, alphaFSCollection); } Console.WriteLine(); }
private void AlphaFS_Directory_GetProperties(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); Console.WriteLine("Aggregated properties of file system objects from Directory: [{0}]\n", folder); var props = Alphaleonis.Win32.Filesystem.Directory.GetProperties(folder.FullName, Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.FilesAndFolders | Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.Recursive); var total = props["Total"]; var file = props["File"]; var size = props["Size"]; var cnt = 0; foreach (var key in props.Keys) { Console.WriteLine("\t\t#{0:000}\t{1, -17} = [{2}]", ++cnt, key, props[key]); } Assert.AreEqual(60, total, "The number of file system objects does not match, but it is expected."); Assert.AreEqual(30, file, "The number of files does not match, but it is expected."); Assert.AreNotEqual(0, size, "The total file system objects size is zero, which is not expected."); } Console.WriteLine(); }
private void Directory_GetFiles_AbsolutePath(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); Console.WriteLine("Input Directory Path: [{0}]\n", folder.FullName); var systemIOCollection = System.IO.Directory.GetFiles(folder.FullName, "*", System.IO.SearchOption.AllDirectories); var alphaFSCollection = Alphaleonis.Win32.Filesystem.Directory.GetFiles(folder.FullName, "*", System.IO.SearchOption.AllDirectories); var fileCount = 0; foreach (var fso in systemIOCollection) { Console.WriteLine("\t#{0:000}\t{1}", ++fileCount, fso); } CollectionAssert.AreEquivalent(systemIOCollection, alphaFSCollection); } Console.WriteLine(); }
private void AlphaFS_Directory_Copy_ExistingDirectory(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folderSrc = tempRoot.CreateRecursiveRandomizedAttributesTree(5); var folderDst = tempRoot.RandomDirectoryFullPath; Console.WriteLine("Src Directory Path: [{0}]", folderSrc.FullName); Console.WriteLine("Dst Directory Path: [{0}]", folderDst); var dirEnumOptions = Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.FilesAndFolders | Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.Recursive; var props = Alphaleonis.Win32.Filesystem.Directory.GetProperties(folderSrc.FullName, dirEnumOptions); var sourceTotal = props["Total"]; var sourceTotalFiles = props["File"]; var sourceTotalSize = props["Size"]; Console.WriteLine("\n\tTotal size: [{0}] - Total Folders: [{1}] - Files: [{2}]", Alphaleonis.Utils.UnitSizeToText(sourceTotalSize), sourceTotal - sourceTotalFiles, sourceTotalFiles); var copyResult = Alphaleonis.Win32.Filesystem.Directory.Copy(folderSrc.FullName, folderDst, Alphaleonis.Win32.Filesystem.CopyOptions.FailIfExists); UnitTestConstants.Dump(copyResult, -18); props = Alphaleonis.Win32.Filesystem.Directory.GetProperties(folderDst, dirEnumOptions); Assert.AreEqual(sourceTotal, props["Total"], "The number of total file system objects do not match."); Assert.AreEqual(sourceTotalFiles, props["File"], "The number of total files do not match."); Assert.AreEqual(sourceTotalSize, props["Size"], "The total file size does not match."); Assert.AreNotEqual(null, copyResult); // Test against copyResult results. Assert.AreEqual(sourceTotal, copyResult.TotalFolders + copyResult.TotalFiles, "The number of total file system objects do not match."); Assert.AreEqual(sourceTotalFiles, copyResult.TotalFiles, "The number of total files do not match."); Assert.AreEqual(sourceTotalSize, copyResult.TotalBytes, "The total file size does not match."); Assert.IsTrue(copyResult.IsCopy); Assert.IsFalse(copyResult.IsMove); Assert.IsTrue(copyResult.IsDirectory); Assert.IsFalse(copyResult.IsFile); Assert.IsTrue(System.IO.Directory.Exists(folderSrc.FullName), "The original directory does not exist, but is expected to."); } Console.WriteLine(); }
private void File_GetAttributes(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); Console.WriteLine("Input Directory Path: [{0}]", folder); foreach (var fso in System.IO.Directory.EnumerateFileSystemEntries(folder.FullName, "*", System.IO.SearchOption.AllDirectories)) { Assert.AreEqual(System.IO.File.GetAttributes(fso), Alphaleonis.Win32.Filesystem.File.GetAttributes(fso)); } } Console.WriteLine(); }
private void AlphaFS_Directory_HasInheritedPermissions(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); Console.WriteLine("Input Directory Path: [{0}]\n", folder.FullName); foreach (var dir in System.IO.Directory.EnumerateDirectories(folder.FullName, "*", System.IO.SearchOption.AllDirectories)) { // Assume inheritance is enabled by default. Assert.IsTrue(Alphaleonis.Win32.Filesystem.Directory.HasInheritedPermissions(dir)); DirectorySecurity acl; try { // Disable inheritance. acl = System.IO.Directory.GetAccessControl(dir); acl.SetAccessRuleProtection(true, false); Alphaleonis.Win32.Filesystem.Directory.SetAccessControl(dir, acl, AccessControlSections.Access); Assert.IsFalse(Alphaleonis.Win32.Filesystem.Directory.HasInheritedPermissions(dir)); } finally { // Enable inheritance. acl = System.IO.Directory.GetAccessControl(dir); acl.SetAccessRuleProtection(false, true); Alphaleonis.Win32.Filesystem.Directory.SetAccessControl(dir, acl, AccessControlSections.Access); Assert.IsTrue(Alphaleonis.Win32.Filesystem.Directory.HasInheritedPermissions(dir)); } } } Console.WriteLine(); }
private void Directory_EnumerateDirectories(bool isNetwork) { using (var tempRoot = new TemporaryDirectory(isNetwork)) { var folder = tempRoot.CreateRecursiveRandomizedAttributesTree(5); Console.WriteLine("Input Directory Path: [{0}]\n", folder.FullName); var sysIOCollection = System.IO.Directory.EnumerateDirectories(folder.FullName, "*", System.IO.SearchOption.AllDirectories).ToArray(); var alphaFSCollection = Alphaleonis.Win32.Filesystem.Directory.EnumerateDirectories(folder.FullName, "*", System.IO.SearchOption.AllDirectories).ToArray(); Console.WriteLine("\tSystem.IO directories enumerated: {0:N0}", sysIOCollection.Length); Console.WriteLine("\tAlphaFS directories enumerated: {0:N0}", alphaFSCollection.Length); CollectionAssert.AreEquivalent(sysIOCollection, alphaFSCollection); } Console.WriteLine(); }