Exemple #1
0
        public void CanHarvestSimpleModel()
        {
            IWorkspace workspace = TestUtils.OpenUserWorkspaceOracle();

            VerifiedModelFactory modelFactory =
                new VerifiedModelFactory(CreateWorkspaceContextSimple,
                                         new SimpleVerifiedDatasetHarvester());

            // NOTE: Harvesting the attributes is sometimes just as fast as with the (cached)
            // MasterDatabaseWorkspaceContextEx (ca. 30s) but sometimes extremely slow!
            modelFactory.HarvestAttributes  = true;
            modelFactory.HarvestObjectTypes = true;

            Model model = modelFactory.CreateModel(workspace, "TestTLM", null, null, "TOPGIS_TLM");

            int tableCount  = model.GetDatasets <TableDataset>().Count;
            int vectorCount = model.GetDatasets <VectorDataset>().Count;

            Assert.Greater(tableCount, 0);
            Assert.Greater(vectorCount, 0);

            Console.WriteLine("Vector datasets: {0}", vectorCount);
            Console.WriteLine("Table datasets: {0}", tableCount);

            foreach (var objectDataset in model.GetDatasets <ObjectDataset>())
            {
                Assert.IsTrue(objectDataset.Attributes.Count > 0);
            }
        }
        private bool Verify([NotNull] XmlDataQualityDocument document,
                            [NotNull] string specificationName,
                            [NotNull] IEnumerable <DataSource> dataSources,
                            double tileSize,
                            [NotNull] string directoryPath,
                            IssueRepositoryType issureRepositoryType,
                            [NotNull] IEnumerable <KeyValuePair <string, string> > properties,
                            [CanBeNull] XmlVerificationOptions verificationOptions,
                            [CanBeNull] AreaOfInterest areaOfInterest,
                            [CanBeNull] ITrackCancel trackCancel,
                            bool ignoreConditionsForUnknownDatasets,
                            out int errorCount,
                            out int warningCount,
                            out int exceptionCount,
                            out int unusedExceptionObjectCount,
                            out int rowCountWithStopConditions)
        {
            try
            {
                QualitySpecification qualitySpecification;
                using (_msg.IncrementIndentation("Setting up quality specification"))
                {
                    var modelFactory = new VerifiedModelFactory(
                        CreateSimpleWorkspaceContext, new SimpleVerifiedDatasetHarvester());

                    var datasetOpener = new SimpleDatasetOpener(new MasterDatabaseDatasetContext());

                    var factory =
                        new XmlBasedQualitySpecificationFactory(modelFactory, datasetOpener);

                    qualitySpecification = factory.CreateQualitySpecification(
                        document, specificationName, dataSources,
                        ignoreConditionsForUnknownDatasets);
                }

                return(Verify(qualitySpecification, tileSize, directoryPath,
                              issureRepositoryType, properties, verificationOptions,
                              areaOfInterest, trackCancel,
                              out errorCount,
                              out warningCount,
                              out exceptionCount,
                              out unusedExceptionObjectCount,
                              out rowCountWithStopConditions));
            }
            finally
            {
                GC.Collect();
            }
        }
Exemple #3
0
        public void CanCreateEmptyQualitySpecification()
        {
            var xmlQualitySpecification = new XmlQualitySpecification {
                Name = "Empty"
            };

            var xmlDocument = new XmlDataQualityDocument();

            xmlDocument.AddQualitySpecification(xmlQualitySpecification);

            var modelFactory =
                new VerifiedModelFactory(CreateWorkspaceContext,
                                         new SimpleVerifiedDatasetHarvester());

            var factory = new XmlBasedQualitySpecificationFactory(
                modelFactory, new SimpleDatasetOpener(new MasterDatabaseDatasetContext()));

            QualitySpecification qualitySpecification =
                factory.CreateQualitySpecification(xmlDocument, xmlQualitySpecification.Name,
                                                   new DataSource[] { });

            Assert.AreEqual(xmlQualitySpecification.Name, qualitySpecification.Name);
        }
Exemple #4
0
        private void CanCreateQualitySpecificationCore()
        {
            var    locator     = TestDataLocator.Create("ProSuite", @"QA\TestData");
            string catalogPath = locator.GetPath("QATestData.mdb");

            var xmlCategory = new XmlDataQualityCategory {
                Name = "Category A"
            };
            var xmlSubCategory = new XmlDataQualityCategory {
                Name = "Category A.1"
            };
            var xmlSubSubCategory = new XmlDataQualityCategory {
                Name = "Category A.1.1"
            };
            var xmlSubSubCategory2 = new XmlDataQualityCategory {
                Name = "Category A.1.2"
            };

            xmlCategory.AddSubCategory(xmlSubCategory);
            xmlSubCategory.AddSubCategory(xmlSubSubCategory);
            xmlSubCategory.AddSubCategory(xmlSubSubCategory2);

            var xmlQCon = new XmlQualityCondition
            {
                Name = "MinArea",
                TestDescriptorName = _xmlTestDescriptorMinArea.Name
            };

            xmlQCon.ParameterValues.Add(new XmlDatasetTestParameterValue
            {
                TestParameterName = "polygonClass",
                Value             = "polygons",
                WorkspaceId       = _xmlWorkspace.ID
            });
            xmlQCon.ParameterValues.Add(new XmlScalarTestParameterValue
            {
                TestParameterName = "limit",
                Value             = "12.34"
            });

            var xmlQSpec = new XmlQualitySpecification {
                Name = "qspec"
            };

            xmlQSpec.Elements.Add(new XmlQualitySpecificationElement
            {
                QualityConditionName = xmlQCon.Name
            });

            var xmlDocument = new XmlDataQualityDocument();

            xmlDocument.AddCategory(xmlCategory);
            xmlDocument.AddWorkspace(_xmlWorkspace);
            //xmlDocument.AddQualitySpecification(xmlQSpec);
            //xmlDocument.AddQualityCondition(xmlQCon);
            xmlDocument.AddTestDescriptor(_xmlTestDescriptorMinArea);

            xmlSubCategory.AddQualitySpecification(xmlQSpec);
            xmlSubSubCategory.AddQualityCondition(xmlQCon);

            var modelFactory =
                new VerifiedModelFactory(CreateWorkspaceContext,
                                         new SimpleVerifiedDatasetHarvester());

            var factory = new XmlBasedQualitySpecificationFactory(
                modelFactory, new SimpleDatasetOpener(new MasterDatabaseDatasetContext()));

            var dataSource = new DataSource(_xmlWorkspace)
            {
                WorkspaceAsText = catalogPath
            };

            QualitySpecification qualitySpecification =
                factory.CreateQualitySpecification(xmlDocument, xmlQSpec.Name,
                                                   new[] { dataSource });

            Assert.NotNull(qualitySpecification.Category);
            Assert.AreEqual(xmlQSpec.Name, qualitySpecification.Name);
            Assert.AreEqual(1, qualitySpecification.Elements.Count);
            if (qualitySpecification.Category != null)
            {
                Assert.AreEqual(xmlSubCategory.Name, qualitySpecification.Category.Name);
                Assert.NotNull(qualitySpecification.Category.ParentCategory);
                if (qualitySpecification.Category.ParentCategory != null)
                {
                    Assert.AreEqual(xmlCategory.Name,
                                    qualitySpecification.Category.ParentCategory.Name);
                }

                Assert.AreEqual(2, qualitySpecification.Category.SubCategories.Count);
            }

            QualityCondition qualityCondition =
                qualitySpecification.Elements[0].QualityCondition;

            Assert.AreEqual(xmlQCon.Name, qualityCondition.Name);
            Assert.NotNull(qualityCondition.Category);
            if (qualityCondition.Category != null)
            {
                Assert.AreEqual(xmlSubSubCategory.Name, qualityCondition.Category.Name);
                Assert.NotNull(qualityCondition.Category.ParentCategory);
                if (qualityCondition.Category.ParentCategory != null)
                {
                    Assert.AreEqual(xmlSubCategory.Name,
                                    qualityCondition.Category.ParentCategory.Name);
                }
            }

            var value =
                (ScalarTestParameterValue)qualityCondition.GetParameterValues("limit")[0];

            Assert.AreEqual(12.34, value.GetValue(typeof(double)));
        }
Exemple #5
0
        public void CanCreateQualitySpecificationIgnoringUnkownDatasets()
        {
            var    locator     = TestDataLocator.Create("ProSuite", @"QA\TestData");
            string catalogPath = locator.GetPath("QATestData.mdb");

            var xmlQCon = new XmlQualityCondition
            {
                Name = "Simple",
                TestDescriptorName = _xmlTestDescriptorSimple.Name
            };

            xmlQCon.ParameterValues.Add(new XmlDatasetTestParameterValue
            {
                TestParameterName = "featureClass",
                Value             = "UNKNOWN",
                WorkspaceId       = _xmlWorkspace.ID
            });

            var xmlQSpec = new XmlQualitySpecification {
                Name = "qspec"
            };

            xmlQSpec.Elements.Add(new XmlQualitySpecificationElement
            {
                QualityConditionName = xmlQCon.Name
            });

            var xmlDocument = new XmlDataQualityDocument();

            xmlDocument.AddWorkspace(_xmlWorkspace);
            xmlDocument.AddQualitySpecification(xmlQSpec);
            xmlDocument.AddQualityCondition(xmlQCon);
            xmlDocument.AddTestDescriptor(_xmlTestDescriptorSimple);

            var modelFactory =
                new VerifiedModelFactory(CreateWorkspaceContext,
                                         new SimpleVerifiedDatasetHarvester());

            var factory = new XmlBasedQualitySpecificationFactory(
                modelFactory, new SimpleDatasetOpener(new MasterDatabaseDatasetContext()));

            var dataSource = new DataSource(_xmlWorkspace)
            {
                WorkspaceAsText = catalogPath
            };

            const bool ignoreConditionsForUnknownDatasets = true;

            QualitySpecification qualitySpecification;

            try
            {
                qualitySpecification =
                    factory.CreateQualitySpecification(xmlDocument, xmlQSpec.Name,
                                                       new[] { dataSource },
                                                       ignoreConditionsForUnknownDatasets);
            }
            catch (Exception)
            {
                // TODO: Move test data to different format
                if (EnvironmentUtils.Is64BitProcess)
                {
                    Console.WriteLine("Expected exception: PGDB is not supported on x64");
                    return;
                }

                throw;
            }

            Assert.AreEqual(xmlQSpec.Name, qualitySpecification.Name);
            Assert.AreEqual(0, qualitySpecification.Elements.Count);
        }