public void FailEnumerateAbsentDirectory()
        {
            string path = GetFullPath(@"DoesNotExist");

            var names = new List <string>();
            EnumerateDirectoryResult result = FileUtilities.EnumerateDirectoryEntries(path, (name, attr) => names.Add(name));

            XAssert.IsFalse(result.Succeeded);
            XAssert.AreEqual(EnumerateDirectoryStatus.SearchDirectoryNotFound, result.Status);

            XAssert.AreEqual(0, names.Count);
        }
        public void FailEnumerateFile()
        {
            string path = GetFullPath(@"NotADirectory");

            WriteFile(@"NotADirectory", string.Empty);

            var names = new List <string>();
            EnumerateDirectoryResult result = FileUtilities.EnumerateDirectoryEntries(path, (name, attr) => names.Add(name));

            XAssert.IsFalse(result.Succeeded);
            XAssert.AreEqual(EnumerateDirectoryStatus.CannotEnumerateFile, result.Status);

            XAssert.AreEqual(0, names.Count);
        }
        public void EnumerateEmptyDirectoryNames()
        {
            string path = Path.Combine(TemporaryDirectory, "emptyDir");

            Directory.CreateDirectory(path);

            var names = new List <string>();
            EnumerateDirectoryResult result = FileUtilities.EnumerateDirectoryEntries(path, (name, attr) => names.Add(name));

            XAssert.IsTrue(result.Succeeded);
            XAssert.AreEqual(EnumerateDirectoryStatus.Success, result.Status);

            XAssert.AreEqual(0, names.Count);
        }
        public void EnumerateNonEmptyDirectory()
        {
            string path = Path.Combine(TemporaryDirectory, "dir");

            Directory.CreateDirectory(path);

            WriteFile(PathGeneratorUtilities.GetRelativePath("dir", "fileA"), string.Empty);
            Directory.CreateDirectory(GetFullPath(PathGeneratorUtilities.GetRelativePath("dir", "dirB")));

            var names = new List <string>();
            EnumerateDirectoryResult result = FileUtilities.EnumerateDirectoryEntries(path, (name, attr) => names.Add(name));

            XAssert.IsTrue(result.Succeeded);
            XAssert.AreEqual(EnumerateDirectoryStatus.Success, result.Status);

            Assert.Contains("fileA", names, StringComparer.Ordinal);
            Assert.Contains("dirB", names, StringComparer.Ordinal);
            Assert.Equal(2, names.Count);
        }
        public void EnumerationIndicatesDirectories()
        {
            string path = Path.Combine(TemporaryDirectory, "dir");

            Directory.CreateDirectory(path);

            Directory.CreateDirectory(GetFullPath(PathGeneratorUtilities.GetRelativePath("dir", "childDir")));
            Directory.CreateDirectory(GetFullPath(PathGeneratorUtilities.GetRelativePath("dir", "childDir2")));

            var names = new List <string>();
            EnumerateDirectoryResult result = FileUtilities.EnumerateDirectoryEntries(
                path,
                (name, attr) =>
            {
                XAssert.IsTrue((attr & FileAttributes.Directory) != 0, "All children are directories.");
                names.Add(name);
            });

            XAssert.IsTrue(result.Succeeded);
            XAssert.AreEqual(EnumerateDirectoryStatus.Success, result.Status);
            Assert.Equal(new[] { "childDir", "childDir2" }, names);
        }