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(); } }
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); }
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))); }
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); }