protected override IList <ITest> CreateTestInstances(object[] args) { var featureClass = (IFeatureClass)args[0]; var referenceClass = (IFeatureClass)args[1]; var referenceSubtypes = (int[])args[2]; var featureClassRules = (string[])args[3]; ConstrParams pars = ConstrParams.Create(featureClass, referenceSubtypes, featureClassRules); var notNearTest = new QaTopoNotNear(featureClass, referenceClass, pars.MaxNear, pars.FeatureClassNear, "0", 0, 0, is3D: false); if (pars.RightSideNears != null) { notNearTest.RightSideNears = pars.RightSideNears; } notNearTest.IgnoreNeighborCondition = pars.IgnoreNeighborCondition; notNearTest.UnconnectedLineCapStyle = LineCapStyle.Butt; var intersectTest = new QaIntersectsOther(featureClass, referenceClass, pars.IgnoreNeighborCondition); return(new List <ITest> { notNearTest, intersectTest }); }
public void CanIgnoreArea() { IFeatureWorkspace ws = TestWorkspaceUtils.CreateInMemoryWorkspace("ignoreArea"); IFieldsEdit fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField("Objektart", esriFieldType.esriFieldTypeInteger)); fields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolyline, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000)); IFeatureClass lineFc = DatasetUtils.CreateSimpleFeatureClass(ws, "lineFc", fields); fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField("Objektart", esriFieldType.esriFieldTypeInteger)); fields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolygon, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000)); IFeatureClass areaFc = DatasetUtils.CreateSimpleFeatureClass(ws, "areaFc", fields); fields = new FieldsClass(); fields.AddField(FieldUtils.CreateOIDField()); fields.AddField(FieldUtils.CreateField("Objektart", esriFieldType.esriFieldTypeInteger)); fields.AddField(FieldUtils.CreateShapeField( "Shape", esriGeometryType.esriGeometryPolygon, SpatialReferenceUtils.CreateSpatialReference ((int)esriSRProjCS2Type.esriSRProjCS_CH1903Plus_LV95, true), 1000)); IFeatureClass ignoreFc = DatasetUtils.CreateSimpleFeatureClass(ws, "ignoreFc", fields); ((IWorkspaceEdit)ws).StartEditing(false); ((IWorkspaceEdit)ws).StopEditing(true); ((IWorkspaceEdit)ws).StartEditing(false); ((IWorkspaceEdit)ws).StopEditing(true); Create(lineFc, 10, CurveConstruction.StartLine(0, 0) .LineTo(10, 10) .Curve); Create(areaFc, 10, CurveConstruction.StartPoly(1, 1) .LineTo(2, 1) .LineTo(2, 2) .LineTo(1, 2) .ClosePolygon()); Create(areaFc, 10, CurveConstruction.StartPoly(6, 6) .LineTo(7, 6) .LineTo(7, 7) .LineTo(6, 7) .ClosePolygon()); Create(ignoreFc, 0, CurveConstruction.StartPoly(1, 1) .LineTo(2, 1) .LineTo(2, 2) .LineTo(1, 2) .ClosePolygon()); Create(ignoreFc, 10, CurveConstruction.StartPoly(6, 6) .LineTo(7, 6) .LineTo(7, 7) .LineTo(6, 7) .ClosePolygon()); var test = new QaIntersectsOther(lineFc, areaFc); test.IgnoreArea = ignoreFc; test.SetConstraint(2, "objektart in (10)"); { // Container test var runner = new QaContainerTestRunner(1000, test); int errorCount = runner.Execute(); Assert.AreEqual( 1, errorCount); // only line errors, point error is removed by test container! } { // simple test var runner = new QaTestRunner(test); int errorCount = runner.Execute(); Assert.AreEqual(2, errorCount); // line AND point errors! } }