private IEnumerable <ITest> CreateTests(
            [NotNull] IEnumerable <QualitySpecificationElement> qualitySpecificationElements,
            [CanBeNull] IDatasetContext datasetContext,
            out IDictionary <ITest, QualitySpecificationElement> qualityConditionsByTest)
        {
            var result = new List <ITest>();

            qualityConditionsByTest = new Dictionary <ITest, QualitySpecificationElement>();

            if (datasetContext == null)
            {
                return(result);
            }

            IOpenDataset datasetOpener = _openDatasetFactory(datasetContext);

            foreach (QualitySpecificationElement element in qualitySpecificationElements)
            {
                QualityCondition condition = element.QualityCondition;

                TestFactory factory = Assert.NotNull(
                    TestFactoryUtils.CreateTestFactory(condition),
                    $"Cannot create test factory for condition {condition.Name}");

                foreach (ITest test in factory.CreateTests(datasetOpener))
                {
                    result.Add(test);
                    qualityConditionsByTest.Add(test, element);
                }
            }

            return(result);
        }
 public IncludedTestFactory([NotNull] Type testFactoryType)
     : base(GetTitle(testFactoryType),
            GetTestFactory(testFactoryType),
            testFactoryType.Assembly,
            ReflectionUtils.IsObsolete(testFactoryType),
            TestFactoryUtils.IsInternallyUsed(testFactoryType))
 {
     _testFactoryType = testFactoryType;
 }
 public IncludedTestConstructor([NotNull] Type testType, int constructorIndex)
     : base(GetTitle(testType, constructorIndex),
            TestFactoryUtils.GetTestFactory(testType, constructorIndex),
            testType.Assembly,
            TestFactoryUtils.IsObsolete(testType, constructorIndex),
            TestFactoryUtils.IsInternallyUsed(testType, constructorIndex))
 {
     _testType         = testType;
     _constructorIndex = constructorIndex;
 }
Beispiel #4
0
        public IncludedTestClass([NotNull] Type testType)
            : base(GetTitle(testType),
                   testType.Assembly,
                   ReflectionUtils.IsObsolete(testType),
                   TestFactoryUtils.IsInternallyUsed(testType),
                   ReflectionUtils.GetCategories(testType))
        {
            Assert.ArgumentNotNull(testType, nameof(testType));

            _testType = testType;
        }
Beispiel #5
0
        internal HtmlTestDescriptor([NotNull] TestDescriptor testDescriptor)
        {
            Assert.ArgumentNotNull(testDescriptor, nameof(testDescriptor));

            TestFactory testFactory =
                Assert.NotNull(TestFactoryUtils.GetTestFactory(testDescriptor));

            Name        = testDescriptor.Name;
            Description = StringUtils.IsNotEmpty(testDescriptor.Description)
                                              ? testDescriptor.Description
                                              : null;

            TestDescription = testFactory.GetTestDescription();
            Signature       = TestImplementationUtils.GetTestSignature(testFactory);

            Type testType;

            if (testDescriptor.TestClass != null)
            {
                testType        = testDescriptor.TestClass.GetInstanceType();
                ConstructorId   = testDescriptor.TestConstructorId;
                UsesConstructor = true;
                IsObsolete      = TestFactoryUtils.IsObsolete(testType, ConstructorId,
                                                              out _obsoleteMessage);
            }
            else if (testDescriptor.TestFactoryDescriptor != null)
            {
                testType        = testDescriptor.TestFactoryDescriptor.GetInstanceType();
                ConstructorId   = -1;
                UsesConstructor = false;
                IsObsolete      = ReflectionUtils.IsObsolete(testType, out _obsoleteMessage);
            }
            else
            {
                throw new ArgumentException("Invalid test descriptor");
            }

            AssemblyName = Path.GetFileName(testType.Assembly.Location);
            ClassName    = testType.FullName;

            _issueCodes     = IssueCodeUtils.GetIssueCodes(testType).ToList();
            _testCategories = testFactory.TestCategories.OrderBy(c => c).ToList();

            foreach (TestParameter testParameter in testFactory.Parameters)
            {
                var htmlTestParameter = new HtmlTestParameter(testParameter);

                _parameters.Add(htmlTestParameter);
                _testParametersByName.Add(testParameter.Name, htmlTestParameter);
            }
        }
Beispiel #6
0
        private static void IncludeTestFactories([NotNull] IReportBuilder reportBuilder,
                                                 [NotNull] IEnumerable <Assembly> assemblies)
        {
            const bool includeObsolete       = true;
            const bool includeInternallyUsed = true;

            foreach (Assembly assembly in assemblies)
            {
                foreach (Type testFactoryType in
                         TestFactoryUtils.GetTestFactoryClasses(
                             assembly, includeObsolete, includeInternallyUsed))
                {
                    reportBuilder.IncludeTestFactory(testFactoryType);
                }
            }
        }
        public void CanTestFactory()
        {
            Type type = typeof(QaMinSegAngleFactory);

            var testDescriptor = new TestDescriptor
            {
                TestFactoryDescriptor = new ClassDescriptor(type)
            };

            const string  fcName = "CanTestFactory";
            IFeatureClass fc     = CreateLineClass(_testWs, fcName);

            IFeature row1 = fc.CreateFeature();

            row1.Shape =
                CurveConstruction.StartLine(0, 0, 0)
                .LineTo(0, 1, 0)
                .LineTo(0.1, 0, 0)
                .LineTo(0.1, 1, 100)
                .LineTo(0.1, 2, 100)
                .CircleTo(GeometryFactory.CreatePoint(0.2, 0, 100))
                .Curve;
            row1.Store();

            double limit = FormatUtils.Radians2AngleInUnits(0.1, AngleUnit.Degree);

            var model = new SimpleModel("model", fc);

            esriGeometryType esriGeometryType = fc.ShapeType;

            var suiteGeometryType = (ProSuiteGeometryType)esriGeometryType;

            ModelVectorDataset ds = model.AddDataset(
                new ModelVectorDataset(fcName)
            {
                GeometryType = new GeometryTypeShape(suiteGeometryType.ToString(),
                                                     suiteGeometryType)
            });

            var condition = new QualityCondition("testtest", testDescriptor);

            QualityConditionParameterUtils.AddParameterValue(condition, "featureClass", ds);
            QualityConditionParameterUtils.AddParameterValue(condition, "limit", limit);
            QualityConditionParameterUtils.AddParameterValue(condition, "is3D", true);

            TestFactory factory = TestFactoryUtils.CreateTestFactory(condition);

            Assert.IsNotNull(factory);

            IList <ITest> tests =
                factory.CreateTests(new SimpleDatasetOpener(model.MasterDatabaseWorkspaceContext));

            Assert.AreEqual(1, tests.Count);
            ITest test = tests[0];

            var runner = new QaContainerTestRunner(1000, test);

            runner.Execute();

            Assert.AreEqual(2, runner.Errors.Count);
        }