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); } }
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); }
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); }
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); }
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); }