示例#1
0
        public void AllChildrenEnumeratedOnlyAfterAllSubDirsAllChildrenEnumerated()
        {
            DirectoryInfo dir = TargetDirectory.GetDirectories().First();

            MakeSubDirs(dir);
            var node = new DirectoryNode(TargetDirectory, null);

            Assert.IsFalse(node.AllChildrenEnumerated);
            node.PopulateSubDirs();
            Assert.IsFalse(node.AllChildrenEnumerated);

            foreach (var subDir in node.SubDirs)
            {
                subDir.PopulateSubDirs();
            }
            Assert.IsFalse(node.AllChildrenEnumerated);

            foreach (var subDir in node.SubDirs)
            {
                foreach (var subSubDir in subDir.SubDirs)
                {
                    subSubDir.PopulateSubDirs();
                }
            }
            Assert.IsTrue(node.AllChildrenEnumerated);
        }
示例#2
0
        /// <summary>
        /// Delete every child under this directory and leave the directory itself alone.
        /// </summary>
        public void Empty()
        {
            foreach (var file in TargetDirectory.GetFiles())
            {
                file.Delete();
            }

            foreach (var directory in TargetDirectory.GetDirectories())
            {
                directory.Delete(true);
            }
        }
示例#3
0
        public void PopulateSubDirs()
        {
            var node = new DirectoryNode(TargetDirectory, null);

            Assert.IsFalse(node.IsExpanded);

            node.PopulateSubDirs();

            var expected = TargetDirectory.GetDirectories().Select(d => new DirectoryNode(d, node));

            CollectionAssert.AreEquivalent(expected, node.SubDirs);
            Assert.IsTrue(node.ThisLevelEnumerated);
        }
示例#4
0
        public async Task <List <string> > GetExistingSongHashesAsync(bool hashExisting)
        {
            foreach (var songDir in TargetDirectory.GetDirectories())
            {
                // Add missing directories to the Dictionary with an empty string for the hash value.
                if (!ExistingHashes.ContainsKey(songDir.FullName))
                {
                    ExistingHashes.Add(songDir.FullName, string.Empty);
                }
            }
            List <string> songsToHash;

            if (hashExisting)
            {
                songsToHash = ExistingHashes.Keys.ToList();
            }
            else
            {
                songsToHash = ExistingHashes.Values.Where(hashData => string.IsNullOrEmpty(hashData)).ToList();
            }


            await Task.Run(() => songsToHash.AsParallel().ForAll(h =>
            {
                lock (_existingHashesLock)
                {
                    if (ExistingHashes.ContainsKey(h))
                    {
                        ExistingHashes[h] = GenerateHash(h);
                    }
                    else
                    {
                        ExistingHashes.Add(h, GenerateHash(h));
                    }
                }
            })).ConfigureAwait(false);

            return(ExistingHashes.Values.ToList());
        }