コード例 #1
0
        protected virtual void PresentTestFixture(CSUnitTestFixtureElement value, IPresentableItem item,
                                                  TreeModelNode modelNode, PresentationState state)
        {
            item.Clear();
            if (IsNodeParentNatural(modelNode, value))
            {
                item.RichText = new CLRTypeName(value.GetTypeClrName()).ShortName;
            }
            else
            {
                var name = new CLRTypeName(value.GetTypeClrName());
                if (string.IsNullOrEmpty(name.NamespaceName))
                {
                    item.RichText = string.Format("{0}", name.ShortName);
                }
                else
                {
                    item.RichText = string.Format("{0}.{1}", name.NamespaceName, name.ShortName);
                }
            }

            Image typeImage  = UnitTestManager.GetStandardImage(UnitTestElementImage.TestContainer);
            Image stateImage = UnitTestManager.GetStateImage(state);

            if (stateImage != null)
            {
                item.Images.Add(stateImage);
            }
            else if (typeImage != null)
            {
                item.Images.Add(typeImage);
            }
            AppendOccurencesCount(item, modelNode, "test");
        }
コード例 #2
0
 public CSUnitTestElement(IUnitTestProvider provider, CSUnitTestFixtureElement fixture, IProject project, string declaringTypeName, string methodName, int order)
     : base(provider, fixture, project, declaringTypeName)
 {
     myFixture    = fixture;
     myOrder      = order;
     myMethodName = methodName;
 }
コード例 #3
0
        public void ExploreAssembly(IMetadataAssembly assembly, IProject project, UnitTestElementConsumer consumer)
        {
            foreach (IMetadataTypeInfo type in assembly.GetTypes())
            {
                if (!IsTestFixture(type))
                {
                    continue;
                }


                var fixture = new CSUnitTestFixtureElement(this, project, type.FullyQualifiedName, assembly.Location);
                fixture.SetExplicit(GetExplicitString(type));

                consumer(fixture);
                int order = 0;
                foreach (IMetadataMethod method in GetAllTestMethods(type))
                {
                    if (!IsTestMethod(method))
                    {
                        continue;
                    }

                    var testElement = new CSUnitTestElement(this, fixture, project, method.DeclaringType.FullyQualifiedName, method.Name, order++);
                    testElement.SetExplicit(GetExplicitString(method));
                    consumer(testElement);
                }
            }
        }
コード例 #4
0
            public void ProcessBeforeInterior(IElement element)
            {
                var declaration = element as IDeclaration;

                if (declaration == null)
                {
                    return;
                }
                CSUnitElementBase testElement = null;

                var declaredElement = declaration.DeclaredElement;
                var typeElement     = declaredElement as ITypeElement;

                if (typeElement != null && IsTestFixture(typeElement))
                {
                    CSUnitTestFixtureElement fixtureElement;

                    if (!myFixtures.ContainsKey(typeElement))
                    {
                        fixtureElement = new CSUnitTestFixtureElement(myProvider, myProject, typeElement.CLRName, myAssemblyPath);
                        myFixtures.Add(typeElement, fixtureElement);
                        myOrders.Add(typeElement, 0);
                    }
                    else
                    {
                        fixtureElement = myFixtures[typeElement];
                    }

                    testElement = fixtureElement;
                    int order = 0;
                    AppendTests(fixtureElement, typeElement.GetSuperTypes(), ref order);
                }


                var typeMember = declaredElement as ITypeMember;

                if (typeMember != null && IsTestMethod(typeMember))
                {
                    ITypeElement type = typeMember.GetContainingType();
                    if (type != null)
                    {
                        CSUnitTestFixtureElement fixtureElement = myFixtures.TryGetValue(type);
                        if (fixtureElement != null)
                        {
                            int order = myOrders.TryGetValue(type) + 1;
                            myOrders[type] = order;
                            testElement    = new CSUnitTestElement(myProvider, fixtureElement, myProject, type.CLRName, typeMember.ShortName, order);
                        }
                    }
                }

                if (testElement == null)
                {
                    return;
                }
                var disposition = new UnitTestElementDisposition(testElement, myFile.ProjectFile, declaration.GetNameDocumentRange().TextRange, declaration.GetDocumentRange().TextRange);

                myConsumer(disposition);
            }
コード例 #5
0
 private void AppendTests(CSUnitTestFixtureElement fixtureElement, IEnumerable <IDeclaredType> types, ref int order)
 {
     foreach (IDeclaredType type in types)
     {
         ITypeElement typeElement = type.GetTypeElement();
         if (typeElement == null)
         {
             continue;
         }
         foreach (ITypeMember member in typeElement.GetMembers())
         {
             if (IsTestMethod(member))
             {
                 new CSUnitTestElement(myProvider, fixtureElement, myProject, typeElement.CLRName, member.ShortName, order++);
             }
         }
         AppendTests(fixtureElement, type.GetSuperTypes(), ref order);
     }
 }
コード例 #6
0
        public IList <UnitTestTask> GetTaskSequence(UnitTestElement element, IList <UnitTestElement> explicitElements)
        {
            var testElement = element as CSUnitTestElement;

            if (testElement != null)
            {
                CSUnitTestFixtureElement parentFixture = testElement.Fixture;
                return(new[]
                {
                    new UnitTestTask(null, new AssemblyLoadTask(parentFixture.AssemblyLocation)),
                    new UnitTestTask(parentFixture, new CSUnitTestFixtureTask(parentFixture.AssemblyLocation, parentFixture.GetTypeClrName(), explicitElements.Contains(parentFixture))),
                    new UnitTestTask(testElement, new CSUnitTestTask(parentFixture.GetTypeClrName(), testElement.MethodName, explicitElements.Contains(testElement))),
                });
            }
            var fixture = element as CSUnitTestFixtureElement;

            if (fixture != null)
            {
                return(EmptyArray <UnitTestTask> .Instance);
            }

            throw new ArgumentException(string.Format("element is not CSUnit: '{0}'", element));
        }