public void AddedModuleIsAtCorrectDepth_FirstAnnotation()
        {
            const string inputCode =
                @"'@Folder(""First.Second.Third"")

Sub Foo()
Dim d As Boolean
d = True
End Sub";

            using (var explorer = new MockedCodeExplorer(ProjectType.HostProject, new[] { ComponentType.StandardModule }, new[] { inputCode })
                                  .SelectFirstCustomFolder())
            {
                var project      = explorer.ViewModel.Projects.OfType <CodeExplorerProjectViewModel>().First();
                var folder       = (CodeExplorerCustomFolderViewModel)explorer.ViewModel.SelectedItem;
                var declarations = project.State.AllUserDeclarations.ToList();

                var annotation  = new FolderAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(1, 1)), null, new[] { "\"First\"" });
                var predeclared = new PredeclaredIdAnnotation(new QualifiedSelection(project.Declaration.QualifiedModuleName, new Selection(2, 1)), null, Enumerable.Empty <string>());

                declarations.Add(GetNewClassDeclaration(project.Declaration, "Foo", new IAnnotation [] { annotation, predeclared }));

                project.Synchronize(ref declarations);
                var added = folder.Children.OfType <CodeExplorerComponentViewModel>().Single();

                Assert.AreEqual(DeclarationType.ClassModule, added.Declaration.DeclarationType);
                Assert.AreEqual("\"First\"", added.Declaration.CustomFolder);
            }
        }
        public void AnnotateDeclarationRefactoringAction_AdjustAttributeSet_AttributeAlreadyThere_AdjustsAttribute_Module()
        {
            const string code         = @"Attribute VB_Exposed = False
Attribute VB_PredeclaredId = False
Public Sub Foo()
End Sub
";
            const string expectedCode = @"Attribute VB_Exposed = False
Attribute VB_PredeclaredId = True
'@PredeclaredId
Public Sub Foo()
End Sub
";
            Func <RubberduckParserState, AnnotateDeclarationModel> modelBuilder = (state) =>
            {
                var declaration = state.DeclarationFinder
                                  .UserDeclarations(DeclarationType.Module)
                                  .Single();
                var annotation = new PredeclaredIdAnnotation();
                var arguments  = new List <TypedAnnotationArgument>();

                return(new AnnotateDeclarationModel(declaration, annotation, arguments, true));
            };

            var refactoredCode = RefactoredCode(code, modelBuilder);

            Assert.AreEqual(expectedCode, refactoredCode);
        }
        public void PredeclaredIdAnnotation_TypeIsPredeclaredId()
        {
            var annotation = new PredeclaredIdAnnotation(new QualifiedSelection(), null, null);

            Assert.AreEqual(AnnotationType.PredeclaredId, annotation.AnnotationType);
        }