public void FilteredIsFalseIfChildMatches() { const string folderName = "Foobar"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _, out var state); using (state) { var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations); var childName = folder.Children.First().Name; for (var characters = 1; characters <= childName.Length; characters++) { folder.Filter = childName.Substring(0, characters); Assert.IsFalse(folder.Filtered); } for (var position = childName.Length - 2; position > 0; position--) { folder.Filter = childName.Substring(position); Assert.IsFalse(folder.Filtered); } } }
public void CompareByType_ReturnsZeroForIdenticalNodes() { var declarations = new List <Declaration>(); var errorNode = new CodeExplorerCustomFolderViewModel(null, "Name", "folder1.folder2", null, ref declarations); Assert.AreEqual(0, new CompareByName().Compare(errorNode, errorNode)); }
public void FilteredIsTrueForCharactersNotInName() { const string testCharacters = "abcdefghijklmnopqrstuwxyz"; const string folderName = "Asdf"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _, out var state); using (state) { var children = declarations.SelectMany(declaration => declaration.IdentifierName.ToCharArray()) .Distinct().ToList(); var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations); var nonMatching = testCharacters.ToCharArray() .Except(folderName.ToLowerInvariant().ToCharArray().Union(children)); foreach (var character in nonMatching.Select(letter => letter.ToString())) { folder.Filter = character; Assert.IsTrue(folder.Filtered); } } }
public void CompareByName_ReturnsCorrectOrdering() { var declarations = new List <Declaration>(); var folderNode1 = new CodeExplorerCustomFolderViewModel(null, "Name1", "Name1", null, ref declarations); var folderNode2 = new CodeExplorerCustomFolderViewModel(null, "Name2", "Name2", null, ref declarations); Assert.IsTrue(new CompareByName().Compare(folderNode1, folderNode2) < 0); }
private static RenameFolderModel ModelFromNode(CodeExplorerCustomFolderViewModel folderModel) { var folder = folderModel.FullPath; var containedModules = ContainedModules(folderModel); var initialSubFolder = folder.SubFolderName(); return(new RenameFolderModel(folder, containedModules, initialSubFolder)); }
public void CompareByName_ReturnsZeroForIdenticalNames() { var declarations = new List <Declaration>(); // this won't happen, but just to be thorough...--besides, it is good for the coverage var folderNode1 = new CodeExplorerCustomFolderViewModel(null, "Name", "Name", null, ref declarations); var folderNode2 = new CodeExplorerCustomFolderViewModel(null, "Name", "Name", null, ref declarations); Assert.AreEqual(0, new CompareByName().Compare(folderNode1, folderNode2)); }
private MoveMultipleFoldersModel FolderModel(CodeExplorerCustomFolderViewModel folderModel) { var folder = folderModel.FullPath; var containedModules = ContainedModules(folderModel); var modulesBySourceFolder = new Dictionary <string, ICollection <ModuleDeclaration> > { { folder, containedModules } }; var initialTargetFolder = folder.ParentFolder(); return(new MoveMultipleFoldersModel(modulesBySourceFolder, initialTargetFolder)); }
private static bool TryGetFolderViewModel(object sender, out CodeExplorerCustomFolderViewModel folderViewModel) { if ((sender as TreeViewItem)?.Header is CodeExplorerCustomFolderViewModel folder) { folderViewModel = folder; return(true); } folderViewModel = null; return(false); }
public void Constructor_CreatesCorrectSubFolderStructure(params object[] parameters) { var structure = ToFolderStructure(parameters.Cast <string>()); var root = structure.First().Folder; var path = root.Split(FolderExtensions.FolderDelimiter); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(structure, out var projectDeclaration); var contents = CodeExplorerProjectViewModel.ExtractTrackedDeclarationsForProject(projectDeclaration, ref declarations); var folder = new CodeExplorerCustomFolderViewModel(null, path.First(), path.First(), null, ref contents); AssertFolderStructureIsCorrect(folder, structure); }
public void Constructor_FolderAttributeIsCorrect(object[] parameters) { var structure = ToFolderStructure(parameters.Cast <string>()); var folderPath = structure.First().Folder; var path = folderPath.Split(FolderExtensions.FolderDelimiter); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(structure, out _); var folder = new CodeExplorerCustomFolderViewModel(null, path.First(), path.First(), null, ref declarations); foreach (var _ in path) { Assert.AreEqual($"'@Folder(\"{folder.FullPath}\")", folder.FolderAttribute); folder = folder.Children.OfType <CodeExplorerCustomFolderViewModel>().FirstOrDefault(); } }
public void ErrorStateCanNotBeSet() { const string folderName = "Foo"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _); var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations) { IsErrorState = true }; Assert.IsFalse(folder.IsErrorState); }
public void SortComparerIsName(CodeExplorerSortOrder order) { const string folderName = "Foo"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _); var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations) { SortOrder = order }; Assert.AreEqual(CodeExplorerItemComparer.Name.GetType(), folder.SortComparer.GetType()); }
public void Constructor_SetsFullPath(object[] parameters) { var structure = ToFolderStructure(parameters.Cast <string>()); var folderPath = structure.First().Folder; var path = folderPath.Split(FolderExtensions.FolderDelimiter); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(structure, out _); var folder = new CodeExplorerCustomFolderViewModel(null, path.First(), path.First(), null, ref declarations); var depth = 1; foreach (var _ in path) { Assert.AreEqual(string.Join(FolderExtensions.FolderDelimiter.ToString(), path.Take(depth++)), folder.FullPath); folder = folder.Children.OfType <CodeExplorerCustomFolderViewModel>().FirstOrDefault(); } }
public void UnfilteredStateIsRestored() { const string folderName = "Foobar"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _); var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations); var childName = folder.Children.First().Name; folder.IsExpanded = false; folder.Filter = childName; Assert.IsTrue(folder.IsExpanded); folder.Filter = string.Empty; Assert.IsFalse(folder.IsExpanded); }
public void Constructor_SetsFolderName(object[] parameters) { var structure = ToFolderStructure(parameters.Cast <string>()); var folderPath = structure.First().Folder; var path = folderPath.Split(FolderExtensions.FolderDelimiter); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(structure, out _, out var state); using (state) { var folder = new CodeExplorerCustomFolderViewModel(null, path.First(), path.First(), null, ref declarations); foreach (var name in path) { Assert.AreEqual(name, folder.Name); folder = folder.Children.OfType <CodeExplorerCustomFolderViewModel>().FirstOrDefault(); } } }
public void FilteredIsFalseForSubsetsOfName() { const string folderName = "Foobar"; var testFolder = (Name : CodeExplorerTestSetup.TestModuleName, Folder : folderName); var declarations = CodeExplorerTestSetup.TestProjectWithFolderStructure(new List <(string Name, string Folder)> { testFolder }, out _); var folder = new CodeExplorerCustomFolderViewModel(null, folderName, folderName, null, ref declarations); for (var characters = 1; characters <= folderName.Length; characters++) { folder.Filter = folderName.Substring(0, characters); Assert.IsFalse(folder.Filtered); } for (var position = folderName.Length - 2; position > 0; position--) { folder.Filter = folderName.Substring(position); Assert.IsFalse(folder.Filtered); } }
public CodeExplorerCustomFolderViewModel GetFolderTree(Declaration declaration = null) { var delimiter = GetDelimiter(); var root = new CodeExplorerCustomFolderViewModel(null, string.Empty, string.Empty, _state.ProjectsProvider, _vbe); var items = declaration == null ? _state.AllUserDeclarations.ToList() : _state.AllUserDeclarations.Where(d => d.ProjectId == declaration.ProjectId).ToList(); var folders = items.Where(item => ComponentTypes.Contains(item.DeclarationType)) .Select(item => item.CustomFolder.Replace("\"", string.Empty)) .Distinct() .Select(item => item.Split(delimiter)); foreach (var folder in folders) { var currentNode = root; var fullPath = string.Empty; foreach (var section in folder) { fullPath += string.IsNullOrEmpty(fullPath) ? section : delimiter + section; var node = currentNode.Items.FirstOrDefault(i => i.Name == section); if (node == null) { node = new CodeExplorerCustomFolderViewModel(currentNode, section, fullPath, _state.ProjectsProvider, _vbe); currentNode.AddChild(node); } currentNode = (CodeExplorerCustomFolderViewModel)node; } } return(root); }
private static void AssertFolderStructureIsCorrect(CodeExplorerCustomFolderViewModel underTest, List <(string Name, string Folder)> structure)