Skip to content

Commit 2073155

Browse files
committed
Add annotation order tests.
1 parent 446f1e1 commit 2073155

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

RubberduckTests/CodeExplorer/CodeExplorerFolderTests.cs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Rubberduck.VBEditor.SafeComWrappers;
77
using Rubberduck.VBEditor.Utility;
88
using System;
9+
using System.Collections.Generic;
910
using System.Linq;
1011
using System.Runtime.InteropServices;
1112
using System.Runtime.InteropServices.ComTypes;
@@ -89,6 +90,70 @@ Dim d As Boolean
8990
}
9091
}
9192

93+
[Category("Code Explorer")]
94+
[Test]
95+
public void AddedModuleIsAtCorrectDepth_FirstAnnotation()
96+
{
97+
const string inputCode =
98+
@"'@Folder(""First.Second.Third"")
99+
100+
Sub Foo()
101+
Dim d As Boolean
102+
d = True
103+
End Sub";
104+
105+
using (var explorer = new MockedCodeExplorer(ProjectType.HostProject, new[] { ComponentType.StandardModule }, new[] { inputCode })
106+
.SelectFirstCustomFolder())
107+
{
108+
var project = explorer.ViewModel.Projects.OfType<CodeExplorerProjectViewModel>().First();
109+
var folder = (CodeExplorerCustomFolderViewModel)explorer.ViewModel.SelectedItem;
110+
var declarations = project.State.AllUserDeclarations.ToList();
111+
112+
var annotation = new FolderAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(1, 1)), null, new[] { "\"First\"" });
113+
var predeclared = new PredeclaredIdAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(2, 1)), null, Enumerable.Empty<string>());
114+
115+
declarations.Add(GetNewClassDeclaration(project.Declaration, "Foo", new IAnnotation [] { annotation, predeclared }));
116+
117+
project.Synchronize(declarations);
118+
var added = folder.Children.OfType<CodeExplorerComponentViewModel>().Single();
119+
120+
Assert.AreEqual(DeclarationType.ClassModule, added.Declaration.DeclarationType);
121+
Assert.AreEqual("\"First\"", added.Declaration.CustomFolder);
122+
}
123+
}
124+
125+
[Category("Code Explorer")]
126+
[Test]
127+
public void AddedModuleIsAtCorrectDepth_NotFirstAnnotation()
128+
{
129+
const string inputCode =
130+
@"'@Folder(""First.Second.Third"")
131+
132+
Sub Foo()
133+
Dim d As Boolean
134+
d = True
135+
End Sub";
136+
137+
using (var explorer = new MockedCodeExplorer(ProjectType.HostProject, new[] { ComponentType.StandardModule }, new[] { inputCode })
138+
.SelectFirstCustomFolder())
139+
{
140+
var project = explorer.ViewModel.Projects.OfType<CodeExplorerProjectViewModel>().First();
141+
var folder = (CodeExplorerCustomFolderViewModel)explorer.ViewModel.SelectedItem;
142+
var declarations = project.State.AllUserDeclarations.ToList();
143+
144+
var annotation = new FolderAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(2, 1)), null, new[] { "\"First\"" });
145+
var predeclared = new PredeclaredIdAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(1, 1)), null, Enumerable.Empty<string>());
146+
147+
declarations.Add(GetNewClassDeclaration(project.Declaration, "Foo", new IAnnotation[] { predeclared, annotation }));
148+
149+
project.Synchronize(declarations);
150+
var added = folder.Children.OfType<CodeExplorerComponentViewModel>().Single();
151+
152+
Assert.AreEqual(DeclarationType.ClassModule, added.Declaration.DeclarationType);
153+
Assert.AreEqual("\"First\"", added.Declaration.CustomFolder);
154+
}
155+
}
156+
92157
[Category("Code Explorer")]
93158
[Test]
94159
public void AddedModuleIsAtCorrectDepth_RootNode()
@@ -298,6 +363,11 @@ private static Declaration GetNewClassDeclaration(Declaration project, string na
298363
? Enumerable.Empty<IAnnotation>()
299364
: new[] { new FolderAnnotation(new QualifiedSelection(project.QualifiedModuleName, new Selection(1, 1)), null, new[] { folder }) };
300365

366+
return GetNewClassDeclaration(project, name, annotations);
367+
}
368+
369+
private static Declaration GetNewClassDeclaration(Declaration project, string name, IEnumerable<IAnnotation> annotations)
370+
{
301371
var declaration =
302372
new ClassModuleDeclaration(new QualifiedMemberName(project.QualifiedModuleName, name), project, name, true, annotations, new Attributes());
303373

0 commit comments

Comments
 (0)