public void SetupFixture() { _lic.Checkout(EsriProduct.ArcEditor); _testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaMinSegAngleTest"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("QaMeasuresAtPointsTest"); }
public void CanTestPointNotNearPolyline() { IFeatureWorkspace testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaPointNotNearTest"); IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolyline, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000, true)); IFeatureClass polyFc = DatasetUtils.CreateSimpleFeatureClass( testWs, "polylineFc", fields); IFeatureClass pointFc = CreatePointClass(testWs, "pointFc"); IFeature polyFeature = polyFc.CreateFeature(); polyFeature.Shape = CurveConstruction.StartLine(0, 0, 0) .LineTo(100, 0, 10) .LineTo(50, 100, 10) .Curve; polyFeature.Store(); IFeature p1 = pointFc.CreateFeature(); p1.Shape = GeometryFactory.CreatePoint(90, 0, 0); p1.Store(); var test1 = new QaPointNotNear(pointFc, polyFc, 1.0); var runner = new QaContainerTestRunner(1000, test1); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test2 = new QaPointNotNear(pointFc, polyFc, 1.0); test2.GeometryComponents = new[] { GeometryComponent.Boundary }; runner = new QaContainerTestRunner(1000, test2); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test3 = new QaPointNotNear(pointFc, polyFc, 95); test3.GeometryComponents = new[] { GeometryComponent.Boundary }; runner = new QaContainerTestRunner(1000, test3); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test4 = new QaPointNotNear(pointFc, polyFc, 2.0); test4.GeometryComponents = new[] { GeometryComponent.Vertices }; runner = new QaContainerTestRunner(1000, test4); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test5 = new QaPointNotNear(pointFc, polyFc, 11.0); test5.GeometryComponents = new[] { GeometryComponent.Vertices }; runner = new QaContainerTestRunner(1000, test5); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test6 = new QaPointNotNear(pointFc, polyFc, 11.0); test6.GeometryComponents = new[] { GeometryComponent.LineStartPoint }; runner = new QaContainerTestRunner(1000, test6); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test7 = new QaPointNotNear(pointFc, polyFc, 91.0); test7.GeometryComponents = new[] { GeometryComponent.LineStartPoint }; runner = new QaContainerTestRunner(1000, test7); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test8 = new QaPointNotNear(pointFc, polyFc, 91.0); test8.GeometryComponents = new[] { GeometryComponent.LineEndPoint }; runner = new QaContainerTestRunner(1000, test8); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test9 = new QaPointNotNear(pointFc, polyFc, 120.0); test9.GeometryComponents = new[] { GeometryComponent.LineEndPoint }; runner = new QaContainerTestRunner(1000, test9); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test10 = new QaPointNotNear(pointFc, polyFc, 89.0); test10.GeometryComponents = new[] { GeometryComponent.LineEndPoints }; runner = new QaContainerTestRunner(1000, test10); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test11 = new QaPointNotNear(pointFc, polyFc, 92.0); test11.GeometryComponents = new[] { GeometryComponent.LineEndPoints }; runner = new QaContainerTestRunner(1000, test11); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); }
public void Setup() { _workspace = TestWorkspaceUtils.CreateTestFgdbWorkspace(GetType().Name); }
private static void CanDetectNtoMUnique([NotNull] IFeatureWorkspace workspace) { const string uniqueFieldName = "FIELD_UNIQUE"; const string foreignKeyFieldName = "FOREIGN_KEY_FIELD"; ITable tableOrig; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField(uniqueFieldName, esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable(workspace, "RelateUnique1", fields, null); tableOrig = table; } ITable tableRel; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField(foreignKeyFieldName, esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable(workspace, "RelateUnique2", fields, null); tableRel = table; } IRelationshipClass rel = TestWorkspaceUtils.CreateSimpleMNRelationship( workspace, "NToMRelTable", tableOrig, tableRel, uniqueFieldName, foreignKeyFieldName); { ((IWorkspaceEdit)workspace).StartEditing(false); for (var i = 0; i < 10; i++) { IRow row = tableOrig.CreateRow(); row.set_Value(1, i); row.Store(); } for (var i = 0; i < 10; i++) { IRow row = tableRel.CreateRow(); row.set_Value(1, i); row.Store(); rel.CreateRelationship((IObject)tableOrig.GetRow(i + 1), (IObject)row); } ((IWorkspaceEdit)workspace).StopEditing(true); } ITable relTab = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin); foreach (bool forceInMemoryTableSort in new[] { true, false }) { var test = new QaUnique(relTab, "RelateUnique1." + uniqueFieldName) { ForceInMemoryTableSorting = forceInMemoryTableSort }; var runner = new QaTestRunner(test); runner.Execute(); AssertUtils.NoError(runner); } }
private static void CanDetectNtoMNonUnique([NotNull] IFeatureWorkspace ws) { const string uniqueFieldName = "FIELD_UNIQUE"; const string foreignKeyFieldName = "FOREIGN_KEY_FIELD"; const string origTableName = "OrigTable2"; const string destTableName = "DestTable2"; ITable originTable; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField(uniqueFieldName, esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable( ws, origTableName, fields); originTable = table; } ITable destinationTable; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField( foreignKeyFieldName, esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable( ws, destTableName, fields); destinationTable = table; } IRelationshipClass relClass = TestWorkspaceUtils.CreateSimpleMNRelationship( ws, "relNonUnique", originTable, destinationTable, "OrigFKey", "DestFKey"); { // insert Data ((IWorkspaceEdit)ws).StartEditing(false); for (var i = 0; i < 10; i++) { IRow row = originTable.CreateRow(); row.set_Value(1, i); row.Store(); } for (var i = 0; i < 10; i++) { IRow row = destinationTable.CreateRow(); row.set_Value(1, i); row.Store(); relClass.CreateRelationship((IObject)originTable.GetRow(i + 1), (IObject)row); } { IRow row = destinationTable.CreateRow(); row.set_Value(1, 5); row.Store(); relClass.CreateRelationship((IObject)originTable.GetRow(5 + 1), (IObject)row); } { IRow row = destinationTable.CreateRow(); row.set_Value(1, 5); row.Store(); relClass.CreateRelationship((IObject)originTable.GetRow(5 + 1), (IObject)row); } { IRow row = destinationTable.CreateRow(); row.set_Value(1, 7); row.Store(); relClass.CreateRelationship((IObject)originTable.GetRow(7 + 1), (IObject)row); } ((IWorkspaceEdit)ws).StopEditing(true); } ITable relTab = TableJoinUtils.CreateQueryTable(relClass, JoinType.InnerJoin); foreach (bool forceInMemoryTableSort in new[] { true, false }) { var test = new QaUnique(relTab, origTableName + "." + uniqueFieldName) { ForceInMemoryTableSorting = forceInMemoryTableSort }; test.SetRelatedTables(new[] { originTable, destinationTable }); var runner = new QaTestRunner(test); runner.Execute(); Assert.AreEqual(5, runner.Errors.Count); } }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("QaConnectionsTest"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaMustBeNearOtherTest"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaLineConnectionFieldValues"); }
public void TestMultipart() { IFeatureWorkspace ws = TestWorkspaceUtils.CreateInMemoryWorkspace("TestMultipart"); IFieldsEdit lineFields = new FieldsClass(); lineFields.AddField(FieldUtils.CreateOIDField()); lineFields.AddField(FieldUtils.CreateTextField("FromVal", 50)); lineFields.AddField(FieldUtils.CreateTextField("ToVal", 50)); lineFields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolyline, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000)); IFeatureClass lineFc = DatasetUtils.CreateSimpleFeatureClass( ws, "TestFieldValuesExpression1", lineFields); IFieldsEdit pointFields = new FieldsClass(); pointFields.AddField(FieldUtils.CreateOIDField()); pointFields.AddField(FieldUtils.CreateTextField("Name", 50)); pointFields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPoint, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000)); IFeatureClass pointFc = DatasetUtils.CreateSimpleFeatureClass( ws, "TestFieldValuesExpression2", pointFields); IPoint center = new PointClass(); center.PutCoords(200, 200); IFeature row1 = lineFc.CreateFeature(); row1.set_Value(1, "Name"); row1.set_Value(2, "AndererName"); row1.Shape = CurveConstruction.StartLine(100, 100).LineTo(200, 160).MoveTo(100, 160) .LineTo(center).Curve; row1.Store(); IFeature row2 = lineFc.CreateFeature(); row2.set_Value(1, "Name"); row2.Shape = CurveConstruction .StartLine(200, 100).LineTo(300, 140).MoveTo(200, 160).LineTo(center) .Curve; row2.Store(); IFeature row3 = lineFc.CreateFeature(); row3.set_Value(1, "Name"); row3.Shape = CurveConstruction .StartLine(300, 100).LineTo(300, 140).MoveTo(300, 160).LineTo(center) .Curve; row3.Store(); IFeature row4 = pointFc.CreateFeature(); row4.set_Value(1, "AndererName"); row4.Shape = center; row4.Store(); string lineField = $"IIF({QaConnections.StartsIn}, FromVal, ToVal)"; var test = new QaLineConnectionFieldValues( lineFc, lineField, LineFieldValuesConstraint.AllEqualOrValidPointExists, pointFc, "Name", PointFieldValuesConstraint.AllEqualAndMatchAnyLineValue); test.UseMultiParts = false; var runner = new QaContainerTestRunner(500, test); Assert.AreEqual(0, runner.Execute()); test.UseMultiParts = true; runner = new QaContainerTestRunner(500, test); Assert.AreEqual(1, runner.Execute()); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaValidUrlsTest"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("TestMinSegmentLength"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("TestUnreferencedRows"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("TestZRange"); }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("TableViewTest"); }
public void TestRelatedFactoryMinParameters() { IFeatureWorkspace testWs = RelTestWs; const string fkTable = "fkTable"; IFeatureClass fc1 = CreateLineClass( testWs, "Fc1_" + Environment.TickCount, new List <IField> { FieldUtils.CreateIntegerField(fkTable) }); IFeatureClass fc2 = CreateLineClass(testWs, "Fc2_" + Environment.TickCount); var ds1 = (IDataset)fc1; var ds2 = (IDataset)fc2; IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); const string IdField = "IdRel"; fields.AddField(FieldUtils.CreateIntegerField(IdField)); string relTableName = "Rel_" + ds1.Name; ITable relTable = TestWorkspaceUtils.CreateSimpleTable(testWs, relTableName, fields); var dsRel = (IDataset)relTable; string relName = "relName" + Environment.TickCount; IRelationshipClass rel = TestWorkspaceUtils.CreateSimple1NRelationship( testWs, relName, relTable, (ITable)fc1, relTable.OIDFieldName, fkTable); ((IWorkspaceEdit)testWs).StartEditing(false); IRow r1 = AddRow(relTable, new object[] { 12 }); IRow r2 = AddRow(relTable, new object[] { 14 }); IFeature f11 = AddFeature( fc1, CurveConstruction.StartLine(0, 0).LineTo(4, 0).Curve, new object[] { r1.OID }); IFeature f12 = AddFeature( fc1, CurveConstruction.StartLine(0, 0).LineTo(4, 0).Curve, new object[] { r2.OID }); IFeature f2 = AddFeature(fc2, CurveConstruction.StartLine(10, 1).LineTo(14, 1).Curve); ((IWorkspaceEdit)testWs).StopEditing(true); var model = new SimpleModel("model", fc1); Dataset mds1 = model.AddDataset(new ModelVectorDataset(ds1.Name)); Dataset mdsRel = model.AddDataset(new ModelTableDataset(dsRel.Name)); Dataset mds2 = model.AddDataset(new ModelVectorDataset(ds2.Name)); var clsDesc = new ClassDescriptor(typeof(QaRelMustBeNearOther)); var tstDesc = new TestDescriptor("testNear", clsDesc); var condition = new QualityCondition("cndNear", tstDesc); QualityConditionParameterUtils.AddParameterValue(condition, "relationTables", mds1); QualityConditionParameterUtils.AddParameterValue(condition, "relationTables", mdsRel, $"{relTableName}.{IdField} = 12"); // --> only f11 get's checked QualityConditionParameterUtils.AddParameterValue(condition, "relation", relName); QualityConditionParameterUtils.AddParameterValue(condition, "join", JoinType.InnerJoin); QualityConditionParameterUtils.AddParameterValue(condition, "nearClasses", mds2); QualityConditionParameterUtils.AddParameterValue(condition, "maximumDistance", 5); QualityConditionParameterUtils.AddParameterValue(condition, "relevantRelationCondition", string.Empty); var fact = new QaRelMustBeNearOther(); fact.Condition = condition; IList <ITest> tests = fact.CreateTests(new SimpleDatasetOpener(model.MasterDatabaseWorkspaceContext)); Assert.AreEqual(1, tests.Count); var runner = new QaContainerTestRunner(1000, tests[0]); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); }
public void TestClosedLines() { var ws = TestWorkspaceUtils.CreateInMemoryWorkspace("ClosedLines"); IFeatureClass polylineFeatureClass; IFeatureClass pointFeatureClass; CreateTestFeatureClasses("polygons5", "points5", out polylineFeatureClass, out pointFeatureClass, ws, polygonAsClosedLines: true); IFeature emptyFeature = polylineFeatureClass.CreateFeature(); emptyFeature.Shape = CurveConstruction.StartLine(100, 300) .LineTo(200, 300) .LineTo(200, 400) .LineTo(100, 400) .LineTo(100, 300) .Curve; emptyFeature.Store(); IFeature counterClockwiseFeature = polylineFeatureClass.CreateFeature(); counterClockwiseFeature.Shape = CurveConstruction.StartLine(100, 100) .LineTo(200, 100) .LineTo(200, 200) .LineTo(100, 200) .LineTo(100, 100) .Curve; counterClockwiseFeature.Store(); IFeature clockwiseFeature = polylineFeatureClass.CreateFeature(); clockwiseFeature.Shape = CurveConstruction.StartLine(100, 100) .LineTo(100, 200) .LineTo(200, 200) .LineTo(200, 100) .LineTo(100, 100) .Curve; clockwiseFeature.Store(); IFeature notClosedFeature = polylineFeatureClass.CreateFeature(); notClosedFeature.Shape = CurveConstruction.StartLine(300, 100) .LineTo(400, 100) .LineTo(400, 200) .Curve; notClosedFeature.Store(); IFeature pointFeature1 = pointFeatureClass.CreateFeature(); pointFeature1.Shape = GeometryFactory.CreatePoint(150, 150); pointFeature1.Store(); IFeature pointFeature2 = pointFeatureClass.CreateFeature(); pointFeature2.Shape = GeometryFactory.CreatePoint(350, 100); pointFeature2.Store(); var test = new QaContainedPointsCount(polylineFeatureClass, pointFeatureClass, 1, string.Empty) { PolylineUsage = PolylineUsage.AsIs }; var containerRunner = new QaContainerTestRunner(1000, test); containerRunner.Execute(); Assert.AreEqual(3, containerRunner.Errors.Count); test = new QaContainedPointsCount(polylineFeatureClass, pointFeatureClass, 1, string.Empty) { PolylineUsage = PolylineUsage.AsPolygonIfClosedElseReportIssue }; containerRunner = new QaContainerTestRunner(1000, test); containerRunner.Execute(); Assert.AreEqual(2, containerRunner.Errors.Count); test = new QaContainedPointsCount(polylineFeatureClass, pointFeatureClass, 1, string.Empty) { PolylineUsage = PolylineUsage.AsPolygonIfClosedElseIgnore }; containerRunner = new QaContainerTestRunner(1000, test); containerRunner.Execute(); Assert.AreEqual(1, containerRunner.Errors.Count); test = new QaContainedPointsCount(polylineFeatureClass, pointFeatureClass, 1, string.Empty) { PolylineUsage = PolylineUsage.AsPolygonIfClosedElseAsPolyline }; containerRunner = new QaContainerTestRunner(1000, test); containerRunner.Execute(); Assert.AreEqual(1, containerRunner.Errors.Count); }
public void TestNonUniqueIntegers() { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField("Unique", esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable(_pgdbWorkspace, "NonUnique", fields); for (var i = 0; i < 10; i++) { IRow row = table.CreateRow(); row.set_Value(1, i); row.Store(); } // create error values { IRow row = table.CreateRow(); row.set_Value(1, 5); row.Store(); } IRow errorRow = table.CreateRow(); errorRow.set_Value(1, 5); errorRow.Store(); { IRow row = table.CreateRow(); row.set_Value(1, 7); row.Store(); } IRow validRow = table.CreateRow(); validRow.set_Value(1, 12); validRow.Store(); foreach (bool forceInMemoryTableSort in new[] { true, false }) { // init Test var test = new QaUnique(table, "Unique") { ForceInMemoryTableSorting = forceInMemoryTableSort }; // Run global test var runner = new QaTestRunner(test); runner.Execute(); Assert.AreEqual(5, runner.Errors.Count); // each non unique row is reported // Run valid row runner = new QaTestRunner(test); runner.Execute(new[] { validRow }); AssertUtils.NoError(runner); // Run error row runner = new QaTestRunner(test); runner.Execute(new[] { errorRow }); Assert.AreEqual(3, runner.Errors.Count); // '5' exists in 3 rows // Run combined runner = new QaTestRunner(test); runner.Execute(new[] { validRow, errorRow }); Assert.AreEqual(3, runner.Errors.Count); } }
public void SetupFixture() { _lic.Checkout(); _testWs = TestWorkspaceUtils.CreateTestFgdbWorkspace("QaContainedPointsCountTest"); }
private static ITable CanDetect1toNNonUnique([NotNull] IFeatureWorkspace workspace) { ITable tableOrig; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField( "Unique", esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable( workspace, "Relate1NNonUnique1", fields); for (var i = 0; i < 10; i++) { IRow row = table.CreateRow(); row.set_Value(1, i); row.Store(); } tableOrig = table; } ITable tableRel; { IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField( "Ref", esriFieldType.esriFieldTypeInteger)); ITable table = TestWorkspaceUtils.CreateSimpleTable( workspace, "Relate1NNonUnique2", fields); for (var i = 0; i < 10; i++) { IRow row = table.CreateRow(); row.set_Value(1, i); row.Store(); } { IRow row = table.CreateRow(); row.set_Value(1, 5); row.Store(); } { IRow row = table.CreateRow(); row.set_Value(1, 5); row.Store(); } { IRow row = table.CreateRow(); row.set_Value(1, 7); row.Store(); } tableRel = table; } IRelationshipClass rel = TestWorkspaceUtils.CreateSimple1NRelationship( workspace, "rel1NNonUnique", tableOrig, tableRel, "Unique", "Ref"); ITable relTab = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin); foreach (bool forceInMemoryTableSort in new[] { true, false }) { var test = new QaUnique(relTab, "Relate1NNonUnique1.Unique") { ForceInMemoryTableSorting = forceInMemoryTableSort }; test.SetRelatedTables(new[] { tableOrig, tableRel }); var runner = new QaTestRunner(test); runner.Execute(); Assert.AreEqual(5, runner.Errors.Count); } return(relTab); }
public void SetupFixture() { _lic.Checkout(); TestWorkspaceUtils.CreateTestFgdbWorkspace("QaContainesOtherTest"); }
public void SetupFixture() { _lic.Checkout(); _workspace = TestWorkspaceUtils.CreateTestFgdbWorkspace(GetType().Name); }
public void TestRelatedFactory() { IFeatureWorkspace initTestWs = _testWs; try { _testWs = RelTestWs; IFeatureClass fc1 = CreateFeatureClass("TestRelatedFactory", esriGeometryType.esriGeometryPolyline); var ds1 = (IDataset)fc1; IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateIntegerField(_fkFieldName)); fields.AddField(FieldUtils.CreateTextField(_textFieldName, 200)); string tableName = ds1.Name + "_table"; ITable table = TestWorkspaceUtils.CreateSimpleTable(_testWs, tableName, fields); var tableDataset = (IDataset)table; string relClassName = "relClass" + Math.Abs(Environment.TickCount); IRelationshipClass rel = TestWorkspaceUtils.CreateSimpleMNRelationship( _testWs, relClassName, table, (ITable)fc1, "fkGrp", "fkFc"); ((IWorkspaceEdit)_testWs).StartEditing(false); IFeature f = AddFeature(fc1, CurveConstruction.StartLine(0, 0) .LineTo(4, 0) .Curve); IRow r = AddRow(table, textFieldValue: "A"); rel.CreateRelationship((IObject)r, f); r = AddRow(table, textFieldValue: "B"); rel.CreateRelationship((IObject)r, f); f = AddFeature(fc1, CurveConstruction.StartLine(4, 0) .LineTo(4, 8) .Curve); r = AddRow(table, textFieldValue: "A"); rel.CreateRelationship((IObject)r, f); ((IWorkspaceEdit)_testWs).StopEditing(true); var model = new SimpleModel("model", fc1); Dataset mds1 = model.AddDataset(new ModelVectorDataset(ds1.Name)); Dataset mdsRel = model.AddDataset(new ModelTableDataset(tableDataset.Name)); var clsDesc = new ClassDescriptor(typeof(QaRelRegularExpression)); var tstDesc = new TestDescriptor("GroupEnds", clsDesc); var condition = new QualityCondition("cndGroupEnds", tstDesc); QualityConditionParameterUtils.AddParameterValue(condition, "relationTables", mds1); QualityConditionParameterUtils.AddParameterValue(condition, "relationTables", mdsRel); QualityConditionParameterUtils.AddParameterValue(condition, "relation", relClassName); QualityConditionParameterUtils.AddParameterValue(condition, "join", JoinType.InnerJoin); QualityConditionParameterUtils.AddParameterValue(condition, "pattern", "A"); QualityConditionParameterUtils.AddParameterValue(condition, "fieldNames", $"{tableName}.{_textFieldName}"); QualityConditionParameterUtils.AddParameterValue(condition, "MatchIsError", false); //condition.AddParameterValue("PatternDescription", "Hallo"); var factory = new QaRelRegularExpression { Condition = condition }; IList <ITest> tests = factory.CreateTests(new SimpleDatasetOpener(model.MasterDatabaseWorkspaceContext)); Assert.AreEqual(1, tests.Count); IList <QaError> errors = Run(tests[0], 1000); AssertErrors(1, errors); IList <InvolvedRow> involvedRows = errors[0].InvolvedRows; Assert.AreEqual(2, involvedRows.Count); Assert.AreEqual($"{tableName}.{_textFieldName}", errors[0].AffectedComponent); Assert.AreEqual("RegularExpression.FieldValueDoesNotMatchRegularExpression", errors[0].IssueCode?.ID); // TOP-4945: expected involved dataset name: base table name, not joined table name Assert.IsTrue(tableName == involvedRows[0].TableName || tableName == involvedRows[1].TableName); } finally { _testWs = initTestWs; } }
public void CanTestPointNotNearWithConstraint() { IFeatureWorkspace testWs = TestWorkspaceUtils.CreateInMemoryWorkspace("QaPointNotNearTest"); IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolygon, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000, true)); IFeatureClass polyFc = DatasetUtils.CreateSimpleFeatureClass( testWs, "polygonFc", fields); IFeatureClass pointFc = CreatePointClass(testWs, "pointFc"); IFeature polyFeature = polyFc.CreateFeature(); polyFeature.Shape = CurveConstruction.StartPoly(0, 0, 0) .LineTo(100, 0, 10) .LineTo(50, 100, 10) .ClosePolygon(); polyFeature.Store(); IFeature p1 = pointFc.CreateFeature(); p1.Shape = GeometryFactory.CreatePoint(20, 1.5, 0); p1.Store(); var test1 = new QaPointNotNear(pointFc, polyFc, 1.0); var runner = new QaContainerTestRunner(1000, test1); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); var test2 = new QaPointNotNear(pointFc, polyFc, 1.0); test2.ValidRelationConstraints = new[] { "G1.ObjectId = 1" }; runner = new QaContainerTestRunner(1000, test2); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test3 = new QaPointNotNear(pointFc, polyFc, 2.0); test3.ValidRelationConstraints = new[] { "G2.ObjectId = 1" }; runner = new QaContainerTestRunner(1000, test3); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test4 = new QaPointNotNear(pointFc, polyFc, 2.0); test4.ValidRelationConstraints = new[] { "G1.ObjectId = G2.ObjectId" }; runner = new QaContainerTestRunner(1000, test4); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); var test5 = new QaPointNotNear(pointFc, polyFc, 2.0); test5.ValidRelationConstraints = new[] { "G1.ObjectId > G2.ObjectId" }; runner = new QaContainerTestRunner(1000, test5); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); }
public void DuplicatesInOtherWorkspace() { IDomain domain1 = DomainUtils.AddDomain(_workspace, DomainUtils.CreateCodedValueDomain( "DOM_FIELD1", esriFieldType.esriFieldTypeInteger, "Description of DOM_FIELD1", new CodedValue(1, "Value 1"), new CodedValue(2, "Value 2"))); IDomain domain2 = DomainUtils.AddDomain(_workspace, DomainUtils.CreateCodedValueDomain( "DOM_FIELD2", esriFieldType.esriFieldTypeInteger, "Description of DOM_FIELD2", new CodedValue(1, "Value 1"), new CodedValue(2, "Value 2"))); // domain (not used in table) with duplicate name - this should not be reported since duplicates are searched in target (?) DomainUtils.AddDomain(_workspace, DomainUtils.CreateCodedValueDomain("DOM_FIELD3", esriFieldType .esriFieldTypeInteger, "Description of DOM_FIELD2", new CodedValue(1, "Value 1"), new CodedValue(2, "Value 2"))); IField field1 = FieldUtils.CreateField("FIELD1", esriFieldType.esriFieldTypeInteger); IField field2 = FieldUtils.CreateField("FIELD2", esriFieldType.esriFieldTypeInteger); IField field3 = FieldUtils.CreateTextField("FIELD3", 20); ((IFieldEdit)field1).Domain_2 = domain1; ((IFieldEdit)field2).Domain_2 = domain2; ITable table = DatasetUtils.CreateTable(_workspace, MethodBase.GetCurrentMethod().Name, FieldUtils.CreateOIDField(), field1, field2, field3); // add domains/table to target workspace IFeatureWorkspace targetWorkspace = TestWorkspaceUtils.CreateTestFgdbWorkspace($"{GetType().Name}_target"); // same name, same description --> should be considered equal, no duplicate DomainUtils.AddDomain(targetWorkspace, DomainUtils.CreateCodedValueDomain("DOM_FIELD1", esriFieldType .esriFieldTypeInteger, "Description of DOM_FIELD1", new CodedValue(1, "Value 1"), new CodedValue(2, "Value 2"))); // different name, same description --> should be reported DomainUtils.AddDomain(targetWorkspace, DomainUtils.CreateCodedValueDomain("DOM_FIELD4", esriFieldType .esriFieldTypeInteger, "Description of DOM_FIELD2", new CodedValue(1, "Value 1"), new CodedValue(2, "Value 2"))); // different name, same description --> should be reported DomainUtils.AddDomain(targetWorkspace, DomainUtils.CreateRangeDomain("DOM_FIELD5", esriFieldType.esriFieldTypeInteger, 0, 100, "Description of DOM_FIELD2")); ITable targetTable = DatasetUtils.CreateTable(targetWorkspace, MethodBase.GetCurrentMethod().Name, FieldUtils.CreateOIDField(), FieldUtils.CreateTextField("FIELD1", 10)); const int maxLength = 25; const bool noDuplicates = true; var runner = new QaTestRunner(new QaSchemaFieldDomainDescriptions(table, maxLength, noDuplicates, targetTable)); runner.Execute(); Assert.AreEqual(1, runner.Errors.Count); }