Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #4
0
        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();
        }
Пример #5
0
        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();
        }
Пример #6
0
        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();
        }