protected virtual void PresentTest(CSUnitTestElement value, IPresentableItem item, TreeModelNode modelNode,
                                           PresentationState state)
        {
            item.Clear();
            if (value.Fixture.GetTypeClrName() != value.GetTypeClrName())
            {
                item.RichText = string.Format("{0}.{1}", new CLRTypeName(value.GetTypeClrName()).ShortName, value.MethodName);
            }
            else
            {
                item.RichText = value.MethodName;
            }

            if (value.IsExplicit)
            {
                item.RichText.SetForeColor(SystemColors.GrayText);
            }

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

            if (stateImage != null)
            {
                item.Images.Add(stateImage);
            }
            else if (typeImage != null)
            {
                item.Images.Add(typeImage);
            }
        }
예제 #2
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);
                }
            }
        }
예제 #3
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);
            }