internal static UnitTestElement ToUnitTestElement()

in src/Adapter/MSTest.CoreAdapter/Extensions/TestCaseExtensions.cs [74:153]


        internal static UnitTestElement ToUnitTestElement(this TestCase testCase, string source)
        {
            var isAsync = (testCase.GetPropertyValue(Constants.AsyncTestProperty) as bool?) ?? false;
            var testClassName = testCase.GetPropertyValue(Constants.TestClassNameProperty) as string;
            var declaringClassName = testCase.GetPropertyValue(Constants.DeclaringClassNameProperty) as string;
            var name = testCase.GetTestName(testClassName);

            TestMethod testMethod;
            if (testCase.ContainsManagedMethodAndType())
            {
                testMethod = new TestMethod(testCase.GetManagedType(), testCase.GetManagedMethod(), testCase.GetHierarchy(), name, testClassName, source, isAsync);
            }
            else
            {
                testMethod = new TestMethod(name, testClassName, source, isAsync);
            }

            var dataType = (DynamicDataType)testCase.GetPropertyValue(Constants.TestDynamicDataTypeProperty, (int)DynamicDataType.None);
            if (dataType != DynamicDataType.None)
            {
                var data = testCase.GetPropertyValue<string[]>(Constants.TestDynamicDataProperty, null);

                testMethod.DataType = dataType;
                testMethod.SerializedData = data;
            }

            testMethod.DisplayName = testCase.DisplayName;

            if (declaringClassName != null && declaringClassName != testClassName)
            {
                testMethod.DeclaringClassFullName = declaringClassName;
            }

            UnitTestElement testElement = new UnitTestElement(testMethod)
            {
                IsAsync = isAsync,
                TestCategory = testCase.GetPropertyValue(Constants.TestCategoryProperty) as string[],
                Priority = testCase.GetPropertyValue(Constants.PriorityProperty) as int?,
                DisplayName = testCase.DisplayName
            };

            if (testCase.Traits.Any())
            {
                testElement.Traits = testCase.Traits.ToArray();
            }

            var cssIteration = testCase.GetPropertyValue<string>(Constants.CssIterationProperty, null);
            if (!string.IsNullOrWhiteSpace(cssIteration))
            {
                testElement.CssIteration = cssIteration;
            }

            var cssProjectStructure = testCase.GetPropertyValue<string>(Constants.CssProjectStructureProperty, null);
            if (!string.IsNullOrWhiteSpace(cssIteration))
            {
                testElement.CssProjectStructure = cssProjectStructure;
            }

            var description = testCase.GetPropertyValue<string>(Constants.DescriptionProperty, null);
            if (!string.IsNullOrWhiteSpace(description))
            {
                testElement.Description = description;
            }

            var workItemIds = testCase.GetPropertyValue<string[]>(Constants.WorkItemIdsProperty, null);
            if (workItemIds != null && workItemIds.Length > 0)
            {
                testElement.WorkItemIds = workItemIds;
            }

            var deploymentItems = testCase.GetPropertyValue<KeyValuePair<string, string>[]>(Constants.DeploymentItemsProperty, null);
            if (deploymentItems != null && deploymentItems.Length > 0)
            {
                testElement.DeploymentItems = deploymentItems;
            }

            testElement.DoNotParallelize = testCase.GetPropertyValue(Constants.DoNotParallelizeProperty, false);

            return testElement;
        }