private void PresentClassElement(XunitTestClassElement value, IPresentableItem item, TreeModelNode modelNode, PresentationState state)
 {
     if (IsNodeParentNatural(modelNode, value))
         item.RichText = value.TypeName.ShortName;
     else if (string.IsNullOrEmpty(value.TypeName.GetNamespaceName()))
         item.RichText = value.TypeName.ShortName;
     else
         item.RichText = string.Format("{0}.{1}", value.TypeName.GetNamespaceName(), value.TypeName.ShortName);
 }
        private void ProcessTestClass(IClrTypeName typeName, IEnumerable<IMethodInfo> methods, XunitTestClassElement parent)
        {
            XunitTestClassElement classElement = factory.GetOrCreateClassElement(typeName, project, envoy, parent);
            consumer(classElement);

            foreach (IMethodInfo method in methods)
            {
                ProcessTestMethod(classElement, method);
            }
        }
 public static XunitTestMethodElement CreateTestMethod(IUnitTestProvider provider, IProject project,
                                                       DeclaredElementProvider declaredElementProvider,
                                                       XunitTestClassElement classElement,
                                                       IClrTypeName typeName, string methodName,
                                                       string skipReason,
                                                       IEnumerable<UnitTestElementCategory> categories,
                                                       bool isDynamic = false)
 {
     var id = GetTestMethodId(classElement, typeName, methodName);
     return new XunitTestMethodElement(provider, classElement, new ProjectModelElementEnvoy(project),
                                       declaredElementProvider, id, typeName.GetPersistent(), methodName,
                                       skipReason, categories, isDynamic);
 }
        public XunitTestMethodElement GetOrCreateTestMethod(IProject project, XunitTestClassElement testClassElement, IClrTypeName typeName,
                                                            string methodName, string skipReason, MultiValueDictionary<string, string> traits, bool isDynamic)
        {
            var categories = GetCategories(traits);

            var element = GetTestMethod(project, testClassElement, typeName, methodName);
            if (element != null)
            {
                element.State = UnitTestElementState.Valid;
                element.SetCategories(categories);
                return element;
            }
            return CreateTestMethod(provider, project, declaredElementProvider, testClassElement, typeName, methodName, skipReason, categories, isDynamic);
        }
 private void ProcessTestMethod(XunitTestClassElement classUnitTestElement, IMethodInfo method)
 {
     XunitTestMethodElement methodUnitTestElement = factory.GetOrCreateMethodElement(new ClrTypeName(method.TypeName), method.Name, project, classUnitTestElement, envoy, MethodUtility.GetSkipReason(method));
     consumer(methodUnitTestElement);
 }
        private static string GetTestMethodId(XunitTestClassElement classElement, IClrTypeName typeName, string methodName)
        {
            var baseTypeName = string.Empty;
            if (!classElement.TypeName.Equals(typeName))
                baseTypeName = typeName.ShortName + ".";

            return string.Format("{0}.{1}{2}", classElement.Id, baseTypeName, methodName);
        }
 public static XunitTestMethodElement GetTestMethod(IProject project, XunitTestClassElement classElement, IClrTypeName typeName, string methodName)
 {
     var id = GetTestMethodId(classElement, typeName, methodName);
     var unitTestElementManager = project.GetSolution().GetComponent<IUnitTestElementManager>();
     return unitTestElementManager.GetElementById(project, id) as XunitTestMethodElement;
 }
 private void ExploreTestMethod(IProject project, XunitTestClassElement classUnitTestElement, IUnitTestElementsObserver observer, IMethodInfo methodInfo)
 {
     var methodUnitTestElement = unitTestElementFactory.GetOrCreateTestMethod(project, classUnitTestElement, new ClrTypeName(methodInfo.TypeName), methodInfo.Name,
         MethodUtility.GetSkipReason(methodInfo), methodInfo.GetTraits(), false);
     observer.OnUnitTestElement(methodUnitTestElement);
 }
 public XunitTestMethodElement GetOrCreateMethodElement(string id, IProject project, XunitTestClassElement parent, ProjectModelElementEnvoy envoy)
 {
     IUnitTestElement element = UnitTestManager.GetInstance(Solution).GetElementById(project, id);
     if (element != null)
     {
         var xunitTestMethodElement = element as XunitTestMethodElement;
         if (xunitTestMethodElement != null)
         {
             xunitTestMethodElement.State = UnitTestElementState.Valid;
         }
         return xunitTestMethodElement;
     }
     string[] splitted = id.Split('.');
     string declaringTypeName = splitted.Take(splitted.Length - 1).Join(".");
     string name = splitted.Last();
     return new XunitTestMethodElement(this, parent, envoy, declaringTypeName, name);
 }
 private XunitTestMethodElement GetOrCreateMethodElement(XunitTestClassElement classElement, IClass @class, IMethod method)
 {
     var projectElement = classElement.GetProject();
     var projectEnvoy = Equals(projectElement, project)
                            ? envoy
                            : ProjectModelElementEnvoy.Create(projectElement);
     return factory.GetOrCreateMethodElement(@class.GetClrName(), method.ShortName, projectElement, classElement, projectEnvoy, UnitTestElementPsiIdentifier.GetSkipReason(method));
 }
        private void ProcessSuperType(XunitTestClassElement classElement, IDeclaredType type)
        {
            var @class = type.GetTypeElement() as IClass;
            if (@class == null)
                return;

            foreach (IMethod method in @class.GetMembers().Where(UnitTestElementPsiIdentifier.IsUnitTest))
                GetOrCreateMethodElement(classElement, @class, method);
        }