예제 #1
0
        void ProcessCreation(FolderItem parentItem, FileSystemChangeEventArgs change)
        {
            var path = change.Path;

            if (fileSystemProvider.FileExists(path))
            {
                var fileInfo = fileSystemProvider.GetFileInfo(path);
                if (fileInfo == null)
                {
                    return;
                }
                var fileItem = new FileItem(change.Name, fileInfo.Item2);
                if (parentItem.FindChildren(fileItem.DisplayName) != null)
                {
                    return;
                }
                parentItem.AddChildren(fileItem);
                OnFileSystemItemAdded(parentItem, fileItem);
            }
            else if (fileSystemProvider.DirectoryExists(path))
            {
                var folderItem = new FolderItem(change.Name);
                if (parentItem.FindChildren(folderItem.DisplayName) != null)
                {
                    return;
                }
                parentItem.AddChildren(folderItem);
                folderItem.PropertyChanged += ehPropertyChanged;
                AddFolderToScan(folderItem);
                OnFileSystemItemAdded(parentItem, folderItem);
            }
        }
예제 #2
0
        public void DriveFolderFileStructureTest()
        {
            var drive   = new FolderItem(@"C:\");
            var folder1 = new FolderItem("1");
            var folder2 = new FolderItem("2");

            drive.AddChildren(folder1);
            drive.AddChildren(folder2);
            Assert.AreEqual(drive, folder1.Parent);
            Assert.AreEqual(drive, folder2.Parent);
            Assert.IsFalse(drive.IsValid);
            Assert.IsFalse(folder1.IsValid);
            Assert.IsFalse(folder2.IsValid);
            Assert.AreEqual(2, drive.Children.Count());
            Assert.IsTrue(drive.Children.Contains(folder1));
            Assert.IsTrue(drive.Children.Contains(folder2));
            Assert.AreEqual(0, drive.Size);
            Assert.AreEqual(0, folder1.Size);
            Assert.AreEqual(0, folder2.Size);
            var file1_1 = new FileItem("1.txt", 1);
            var file2_1 = new FileItem("1.txt", 2);

            folder1.AddChildren(file1_1);
            Assert.AreEqual(folder1, file1_1.Parent);
            Assert.AreEqual(1, folder1.Size);
            Assert.IsTrue(folder1.IsValid);
            Assert.IsFalse(drive.IsValid);
            Assert.AreEqual(1, drive.Size);
            folder2.AddChildren(file2_1);
            Assert.AreEqual(folder2, file2_1.Parent);
            Assert.AreEqual(2, folder2.Size);
            Assert.IsTrue(folder2.IsValid);
            Assert.IsTrue(drive.IsValid);
            Assert.AreEqual(3, drive.Size);
        }
예제 #3
0
        public void NestedFolderRemoveSetSizeStructureTest()
        {
            var folder1 = new FolderItem(@"C:\1");
            var folder2 = new FolderItem("1");

            Assert.IsFalse(folder1.IsValid);
            Assert.IsFalse(folder2.IsValid);
            Assert.AreEqual(0, folder1.Size);
            Assert.AreEqual(0, folder2.Size);
            var file1_1 = new FileItem("1.txt", 1);
            var file2_1 = new FileItem("1.txt", 2);

            folder1.AddChildren(folder2);
            folder1.AddChildren(file1_1);
            Assert.AreEqual(2, folder1.Children.Count());
            Assert.AreEqual(folder1, file1_1.Parent);
            Assert.AreEqual(1, folder1.Size);
            Assert.IsFalse(folder1.IsValid);
            folder2.AddChildren(file2_1);
            Assert.AreEqual(folder2, file2_1.Parent);
            Assert.AreEqual(2, folder2.Size);
            Assert.IsTrue(folder2.IsValid);
            Assert.IsTrue(folder1.IsValid);
            Assert.AreEqual(3, folder1.Size);
            folder1.RenameChildren("1.txt", @"C:\1\1.txt", "new.txt", @"C:\1\new.txt");
            var foundFile = folder1.FindChildren("1.txt");

            Assert.IsNull(foundFile);
            foundFile = folder1.FindChildren("new.txt");
            Assert.IsNotNull(foundFile);
            foundFile.SetSize(100);
            Assert.AreEqual(100, foundFile.Size);
            Assert.AreEqual(102, folder1.Size);
        }
예제 #4
0
        public void NestedFolderFindRemoveStructureTest()
        {
            var folder1 = new FolderItem(@"C:\1");
            var folder2 = new FolderItem("1");

            Assert.IsFalse(folder1.IsValid);
            Assert.IsFalse(folder2.IsValid);
            Assert.AreEqual(0, folder1.Size);
            Assert.AreEqual(0, folder2.Size);
            var file1_1 = new FileItem("1.txt", 1);
            var file2_1 = new FileItem("1.txt", 2);

            folder1.AddChildren(folder2);
            folder1.AddChildren(file1_1);
            Assert.AreEqual(2, folder1.Children.Count());
            Assert.AreEqual(folder1, file1_1.Parent);
            Assert.AreEqual(1, folder1.Size);
            Assert.IsFalse(folder1.IsValid);
            folder2.AddChildren(file2_1);
            Assert.AreEqual(folder2, file2_1.Parent);
            Assert.AreEqual(2, folder2.Size);
            Assert.IsTrue(folder2.IsValid);
            Assert.IsTrue(folder1.IsValid);
            Assert.AreEqual(3, folder1.Size);
            var foundFolder = folder1.FindChildren("1");

            Assert.AreEqual(folder2, foundFolder);
            var foundFile = folder1.FindChildren("1.txt");

            Assert.AreEqual(file1_1, foundFile);
            folder1.RemoveChildren("1");
            Assert.AreEqual(1, folder1.Size);
            folder1.RemoveChildren("1.txt");
            Assert.AreEqual(0, folder1.Size);
        }
예제 #5
0
        public void DriveFolderStructureTest()
        {
            var drive   = new FolderItem(@"C:\");
            var folder1 = new FolderItem("1");
            var folder2 = new FolderItem("2");

            drive.AddChildren(folder1);
            drive.AddChildren(folder2);
            Assert.AreEqual(drive, folder1.Parent);
            Assert.AreEqual(drive, folder2.Parent);
            Assert.IsFalse(drive.IsValid);
            Assert.IsFalse(folder1.IsValid);
            Assert.IsFalse(folder2.IsValid);
            Assert.AreEqual(2, drive.Children.Count());
            Assert.IsTrue(drive.Children.Contains(folder1));
            Assert.IsTrue(drive.Children.Contains(folder2));
            Assert.AreEqual(0, drive.Size);
            Assert.AreEqual(0, folder1.Size);
            Assert.AreEqual(0, folder2.Size);
        }