Exemple #1
0
        public void CodeElements_OneNamespaceInProjectWithTwoPartsToName_ReturnsOneCodeNamespaceItemWithFirstPartOfNamespaceAsName()
        {
            CreateCodeModel();
            helper.AddNamespaceCompletionEntryInNamespace(String.Empty, "First");
            helper.AddNamespaceCompletionEntryInNamespace("First", "Second");

            global::EnvDTE.CodeElements  codeElements  = codeModel.CodeElements;
            global::EnvDTE.CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("First", codeNamespace.FullName);
            Assert.AreEqual("First", codeNamespace.Name);
        }
        public void ImplementedInterfaces_ClassImplementsIDisposable_ReturnsCodeInterfaceForIDisposable()
        {
            CreateClass(
                "using System;\r\n" +
                "class MyClass : IDisposable {}");

            global::EnvDTE.CodeElements codeElements = codeClass.ImplementedInterfaces;

            CodeInterface codeInterface = codeElements.FirstCodeInterfaceOrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("System.IDisposable", codeInterface.FullName);
        }
        public void BaseTypes_ClassBaseTypeIsSystemObject_ReturnsSystemObject()
        {
            CreateProjectContent();
            CreatePublicClass("MyClass");
            AddBaseTypeToClass("System.Object");

            global::EnvDTE.CodeElements codeElements = codeClass.Bases;
            CodeClass2 baseClass = codeElements.FirstCodeClass2OrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("System.Object", baseClass.FullName);
            Assert.AreEqual("Object", baseClass.Name);
        }
        public void Arguments_AttributeHasOneStringNamedArgument_ReturnsOneAttributeArgumentWithName()
        {
            CreateMSBuildAttribute("Test.MyAttribute");
            helper.AddNamedArgument("Name", "StringValue");
            CreateAttribute();

            global::EnvDTE.CodeElements args = codeAttribute.Arguments;

            CodeAttributeArgument attributeArg = args.FirstCodeAttributeArgumentOrDefault();

            Assert.AreEqual("Name", attributeArg.Name);
            Assert.AreEqual("\"StringValue\"", attributeArg.Value);
        }
        public void Attributes_PropertyHasOneAttribute_ReturnsOneAttribute()
        {
            helper.CreateProperty("MyProperty");
            helper.AddAttribute("Tests.TestAttribute", "TestAttribute");
            CreateCodeProperty2();

            global::EnvDTE.CodeElements attributes = property.Attributes;

            CodeAttribute2 attribute = attributes.Item(1) as CodeAttribute2;

            Assert.AreEqual(1, attributes.Count);
            Assert.AreEqual("Tests.TestAttribute", attribute.FullName);
        }
        public void FileCodeModel_GetCodeElementsFromFileCodeModelForProjectFile_FileServicePassedToFileCodeModel()
        {
            CreateProjectItems();
            msbuildProject.FileName = @"d:\projects\MyProject\MyProject.csproj";
            msbuildProject.AddFile(@"src\program.cs");

            global::EnvDTE.ProjectItem directoryItem = projectItems.Item("src");
            global::EnvDTE.ProjectItem fileItem      = directoryItem.ProjectItems.Item("program.cs");

            global::EnvDTE.CodeElements codeElements = fileItem.FileCodeModel.CodeElements;

            Assert.AreEqual(@"d:\projects\MyProject\src\program.cs", fakeFileService.FileNamePassedToGetCompilationUnit);
            Assert.AreEqual(0, codeElements.Count);
        }
        public void Parameters_PropertyIsIndexerWithOneParameter_ReturnsOneParameter()
        {
            CreateCodeProperty2(
                "class MyClass {\r\n" +
                "    public int this[int item] { get { return 0; } }\r\n" +
                "}");

            global::EnvDTE.CodeElements parameters = property.Parameters;

            CodeParameter parameter = parameters.FirstCodeParameterOrDefault();

            Assert.AreEqual(1, parameters.Count);
            Assert.AreEqual("item", parameter.Name);
        }
        public void Attributes_ClassHasOneAttribute_ReturnsOneAttribute()
        {
            CreateProjectContent();
            CreateClass("TestClass");
            AddAttributeToClass("TestAttribute");
            CreateCodeType();

            global::EnvDTE.CodeElements attributes = codeType.Attributes;

            CodeAttribute2 attribute = attributes.Item(1) as CodeAttribute2;

            Assert.AreEqual(1, attributes.Count);
            Assert.AreEqual("Test", attribute.Name);
        }
        public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace()
        {
            CreateProjectContent();
            helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
            CreateCodeNamespace("First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace childNamespace        = members.FirstCodeNamespaceOrDefault();

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", childNamespace.Name);
            Assert.AreEqual("First.Second", childNamespace.FullName);
        }
        public void Members_ClassHasOneField_ReturnsOneField()
        {
            CreateClass(
                "public class MyClass {\r\n" +
                "    public int MyField;\r\n" +
                "}");

            global::EnvDTE.CodeElements codeElements = codeClass.Members;

            CodeVariable codeVariable = codeElements.FirstCodeVariableOrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("MyField", codeVariable.Name);
        }
        public void Members_NamespaceHasOneChildNamespace_ReturnsOneChildNamespace()
        {
            string code = "namespace First.Second {}";

            CreateCodeNamespace(code, "First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace childNamespace        = members.FirstCodeNamespaceOrDefault();

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", childNamespace.Name);
            Assert.AreEqual("First.Second", childNamespace.FullName);
        }
        public void Members_ClassHasOneProperty_ReturnsOneProperty()
        {
            CreateClass(
                "public class MyClass {\r\n" +
                "    public int MyProperty { get; set; }\r\n" +
                "}");

            global::EnvDTE.CodeElements codeElements = codeClass.Members;

            CodeProperty2 codeProperty = codeElements.FirstCodeProperty2OrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("MyProperty", codeProperty.Name);
        }
        public void Members_ClassHasOneMethod_ReturnsOneMethod()
        {
            CreateClass(
                "public class MyClass {\r\n" +
                "    public void MyMethod() {}\r\n" +
                "}");

            global::EnvDTE.CodeElements codeElements = codeClass.Members;

            CodeFunction2 codeFunction = codeElements.FirstCodeFunction2OrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("MyMethod", codeFunction.Name);
        }
        public void ImplementedInterfaces_ClassImplementsGenericICollectionOfString_ReturnsCodeInterfaceForICollection()
        {
            CreateClass(
                "using System;\r\n" +
                "using System.Collections.Generic;\r\n" +
                "class MyClass : ICollection<string> {}");

            global::EnvDTE.CodeElements codeElements = codeClass.ImplementedInterfaces;

            CodeInterface codeInterface = codeElements.FirstCodeInterfaceOrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("System.Collections.Generic.ICollection<System.String>", codeInterface.FullName);
        }
        public void Arguments_AttributeHasOneStringPositionalArgument_ReturnsOneAttributeArgumentWithNoName()
        {
            CreateMSBuildAttribute("Test.MyAttribute");
            helper.AddPositionalArguments("StringValue");
            CreateAttribute();

            global::EnvDTE.CodeElements args = codeAttribute.Arguments;

            CodeAttributeArgument attributeArg = args.FirstCodeAttributeArgumentOrDefault();

            Assert.AreEqual(1, args.Count);
            Assert.AreEqual(String.Empty, attributeArg.Name);
            Assert.AreEqual("\"StringValue\"", attributeArg.Value);
        }
        public void Members_NamespaceHasOneClass_ReturnsOneClass()
        {
            string code =
                "namespace Tests {\r\n" +
                "    public class MyClass {}\r\n" +
                "}";

            CreateCodeNamespace(code, "Tests");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeClass2 codeClass = members.FirstCodeClass2OrDefault();

            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Tests.MyClass", codeClass.FullName);
        }
Exemple #17
0
        public void Attributes_ParameterHasOneAttribute_ReturnsOneAttribute()
        {
            CreateParameter(
                "using System;\r\n" +
                "public class MyClass {\r\n" +
                "    public void MyMethod([Obsolete] int parameter) {}\r\n" +
                "}");

            global::EnvDTE.CodeElements attributes = parameter.Attributes;

            CodeAttribute2 attribute = parameter.Attributes.FirstCodeAttribute2OrDefault();

            Assert.AreEqual(1, attributes.Count);
            Assert.AreEqual("System.ObsoleteAttribute", attribute.FullName);
        }
Exemple #18
0
        public void FileCodeModel_GetCodeElementsFromFileCodeModelForProjectFile_FileServicePassedToFileCodeModel()
        {
            CreateProjectItems(@"d:\projects\MyProject\MyProject.csproj");
            AddCompilationUnit();
            msbuildProject.AddFile(@"src\program.cs");
            global::EnvDTE.ProjectItem directoryItem = projectItems.Item("src");
            global::EnvDTE.ProjectItem fileItem      = directoryItem.ProjectItems.Item("program.cs");

            global::EnvDTE.CodeElements codeElements = fileItem.FileCodeModel.CodeElements;

            CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();

            Assert.AreEqual(testableDteProject.TestableProject, fakeFileService.ProjectPassedToGetCompilationUnit);
            Assert.AreEqual(0, codeElements.Count);
        }
        public void Attributes_PropertyHasOneAttribute_ReturnsOneAttribute()
        {
            CreateCodeProperty2(
                "class MyClass {\r\n" +
                "    [System.Obsolete]\r\n" +
                "    public int MyProperty { get; set; }\r\n" +
                "}");

            global::EnvDTE.CodeElements attributes = property.Attributes;

            CodeAttribute2 attribute = attributes.Item(1) as CodeAttribute2;

            Assert.AreEqual(1, attributes.Count);
            Assert.AreEqual("System.ObsoleteAttribute", attribute.FullName);
        }
Exemple #20
0
        public void CodeElements_OneNamespaceInProjectWithTwoPartsToName_ReturnsOneCodeNamespaceItemWithFirstPartOfNamespaceAsName()
        {
            CreateCodeModel();
            AddClassToProject("namespace First.Second {}");

            global::EnvDTE.CodeElements  codeElements  = codeModel.CodeElements;
            global::EnvDTE.CodeNamespace codeNamespace = codeElements
                                                         .FindFirstCodeNamespaceOrDefault(e => e.Name == "First");

            global::EnvDTE.CodeNamespace secondCodeNamespace = codeNamespace.Members.FirstCodeNamespaceOrDefault();
            Assert.AreEqual("First", codeNamespace.FullName);
            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual("Second", secondCodeNamespace.Name);
            Assert.AreEqual("First.Second", secondCodeNamespace.FullName);
        }
        public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
        {
            CreateProjectContent();
            helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
            helper.AddNamespaceCompletionEntriesInNamespace("First.Second", "Third", "Different");
            CreateCodeNamespace("First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace secondNamespace       = members.FirstOrDefault() as CodeNamespace;

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", secondNamespace.Name);
            Assert.AreEqual("First.Second", secondNamespace.FullName);
            Assert.AreEqual(2, secondNamespace.Members.Count);
        }
Exemple #22
0
        public void Attributes_MethodHasOneAttribute_ReturnsOneAttribute()
        {
            CreateFunction(
                "using System;\r\n" +
                "public class MyClass {\r\n" +
                "    [Obsolete]\r\n" +
                "    public void MyFunction() {}\r\n" +
                "}");

            global::EnvDTE.CodeElements attributes = codeFunction.Attributes;

            CodeAttribute2 attribute = attributes.FirstCodeAttribute2OrDefault();

            Assert.AreEqual(1, attributes.Count);
            Assert.AreEqual("System.ObsoleteAttribute", attribute.FullName);
        }
        public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
        {
            string code = "namespace First.Second.Third {}";

            CreateCodeNamespace(code, "First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace secondNamespace       = members.FirstCodeNamespaceOrDefault();
            CodeNamespace thirdNamespace        = secondNamespace.Members.FirstCodeNamespaceOrDefault();

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", secondNamespace.Name);
            Assert.AreEqual("First.Second", secondNamespace.FullName);
            Assert.AreEqual(1, secondNamespace.Members.Count);
            Assert.AreEqual("First.Second.Third", thirdNamespace.FullName);
            Assert.AreEqual(0, thirdNamespace.Members.Count);
        }
        public void Members_ProjectHasTwoNamespacesWithCommonFirstAndSecondPartOfThreePartNamespace_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
        {
            string code =
                "namespace First.Second {\r\n" +
                "    namespace Third {}\r\n" +
                "    namespace Different {}\r\n" +
                "}";

            CreateCodeNamespace(code, "First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace secondNamespace       = members.FirstOrDefault() as CodeNamespace;

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", secondNamespace.Name);
            Assert.AreEqual("First.Second", secondNamespace.FullName);
            Assert.AreEqual(2, secondNamespace.Members.Count);
        }
        public void Members_NamespaceHasOneChildNamespaceWithThreeNamespaceParts_ReturnsOneChildNamespaceWhichHasOneChildNamespace()
        {
            CreateProjectContent();
            helper.AddNamespaceCompletionEntryInNamespace("First", "Second");
            helper.AddNamespaceCompletionEntryInNamespace("First.Second", "Third");
            helper.NoCompletionItemsInNamespace("First.Second.Third");
            CreateCodeNamespace("First");

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace secondNamespace       = members.FirstCodeNamespaceOrDefault();
            CodeNamespace thirdNamespace        = secondNamespace.Members.FirstCodeNamespaceOrDefault();

            Assert.AreEqual("First", codeNamespace.Name);
            Assert.AreEqual(1, members.Count);
            Assert.AreEqual("Second", secondNamespace.Name);
            Assert.AreEqual("First.Second", secondNamespace.FullName);
            Assert.AreEqual(1, secondNamespace.Members.Count);
            Assert.AreEqual("First.Second.Third", thirdNamespace.FullName);
            Assert.AreEqual(0, thirdNamespace.Members.Count);
        }
Exemple #26
0
        public void CodeElements_TwoNamespacesInProjectWithFirstPartsTheName_ReturnsOneParentNamespaceWithTwoChildNamespaces()
        {
            CreateCodeModel();
            helper.AddNamespaceCompletionEntryInNamespace(String.Empty, "First");
            helper.AddNamespaceCompletionEntriesInNamespace("First", "A", "B");
            helper.NoCompletionItemsInNamespace("First.A");
            helper.NoCompletionItemsInNamespace("First.B");

            global::EnvDTE.CodeElements codeElements = codeModel.CodeElements;
            CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace firstChildNamespace   = members.FirstCodeNamespaceOrDefault();
            CodeNamespace secondChildNamespace  = members.LastCodeNamespaceOrDefault();

            Assert.AreEqual(1, codeElements.Count);
            Assert.AreEqual("First", codeNamespace.FullName);
            Assert.AreEqual(2, codeNamespace.Members.Count);
            Assert.AreEqual("A", firstChildNamespace.Name);
            Assert.AreEqual("B", secondChildNamespace.Name);
        }
Exemple #27
0
        public void CodeElements_TwoNamespacesInProjectWithFirstPartsTheName_ReturnsOneParentNamespaceWithTwoChildNamespaces()
        {
            CreateCodeModel();
            string code =
                "namespace First.A { }\r\n" +
                "namespace First.B { }\r\n";

            AddClassToProject(code);

            global::EnvDTE.CodeElements codeElements = codeModel.CodeElements;
            CodeNamespace codeNamespace = codeElements.FirstCodeNamespaceOrDefault();

            global::EnvDTE.CodeElements members = codeNamespace.Members;
            CodeNamespace firstChildNamespace   = members.FirstCodeNamespaceOrDefault();
            CodeNamespace secondChildNamespace  = members.LastCodeNamespaceOrDefault();

            Assert.AreEqual("First", codeNamespace.FullName);
            Assert.AreEqual(2, codeNamespace.Members.Count);
            Assert.AreEqual("A", firstChildNamespace.Name);
            Assert.AreEqual("B", secondChildNamespace.Name);
        }
Exemple #28
0
 public static CodeClass2 LastCodeClass2OrDefault(this global::EnvDTE.CodeElements codeElements)
 {
     return(codeElements.LastOrDefault() as CodeClass2);
 }
Exemple #29
0
 public static CodeImport FirstCodeImportOrDefault(this global::EnvDTE.CodeElements codeElements)
 {
     return(codeElements.FirstOrDefault() as CodeImport);
 }
Exemple #30
0
 public static CodeParameter2 FirstCodeParameter2OrDefault(this global::EnvDTE.CodeElements codeElements)
 {
     return(codeElements.FirstOrDefault() as CodeParameter2);
 }