public void CanAllowSingleConnectedLineShorterThanNearDistance() { const string testName = "CanAllowSingleConnectedLineShorterThanNearDistance"; IFeatureClass lineClass = CreateFeatureClass(string.Format("{0}_lines", testName), esriGeometryType.esriGeometryPolyline); IFeature longLine = lineClass.CreateFeature(); longLine.Shape = CurveConstruction.StartLine(0, 0) .LineTo(100, 0) .Curve; longLine.Store(); IFeature shortLine = lineClass.CreateFeature(); shortLine.Shape = CurveConstruction.StartLine(100, 0) .LineTo(101, 0) .Curve; shortLine.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(lineClass, new[] { lineClass }, 2, false); var runner = new QaContainerTestRunner(1000, test); runner.Execute(verificationEnvelope); AssertUtils.NoError(runner); }
public void CanReportManyErrors() { const string testName = "CanReportManyErrors"; IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName), esriGeometryType.esriGeometryPoint); IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName), esriGeometryType.esriGeometryPolyline); var nearClasses = new List <IFeatureClass> { nearClass }; IFeature nodeRow = nodeClass.CreateFeature(); nodeRow.Shape = GeometryFactory.CreatePoint(0, 0); nodeRow.Store(); IFeature nodeRow1 = nodeClass.CreateFeature(); nodeRow1.Shape = GeometryFactory.CreatePoint(4, 4); nodeRow1.Store(); IFeature nodeRow2 = nodeClass.CreateFeature(); nodeRow2.Shape = GeometryFactory.CreatePoint(1, 4); nodeRow2.Store(); IFeature nodeRow3 = nodeClass.CreateFeature(); nodeRow3.Shape = GeometryFactory.CreatePoint(5, 3); nodeRow3.Store(); IFeature nearRow = nearClass.CreateFeature(); nearRow.Shape = CurveConstruction.StartLine(1, 1) .LineTo(2, 1) .LineTo(3, 3) .LineTo(1, 2) .LineTo(1, 3) .Curve; nearRow.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 4); var runner = new QaContainerTestRunner(1000, test); runner.Execute(verificationEnvelope); Assert.AreEqual(4, runner.Errors.Count); }
public void CanReportErrorUseMultipleTolerancesInTileLeft() { const string testName = "CanReportErrorUseMultipleTolerancesInTileLeft"; IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName), esriGeometryType.esriGeometryPoint); IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName), esriGeometryType.esriGeometryPolyline); IFeatureClass nearClass1 = CreateFeatureClass(string.Format("{0}_near1", testName), esriGeometryType.esriGeometryPolyline); var nearClasses = new List <IFeatureClass> { nearClass, nearClass1 }; IFeature nodeRow = nodeClass.CreateFeature(); nodeRow.Shape = GeometryFactory.CreatePoint(201, 199); nodeRow.Store(); IFeature nearRow = nearClass.CreateFeature(); nearRow.Shape = CurveConstruction.StartLine(199, 198) .LineTo(100, 100) .Curve; nearRow.Store(); IFeature nearRow1 = nearClass1.CreateFeature(); nearRow1.Shape = CurveConstruction.StartLine(100, 205) .LineTo(199, 199) .LineTo(100, 103) .Curve; nearRow1.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(nodeClass, nearClasses, new List <double> { 2.0, 3.0 }, 0, false, false); var runner = new QaContainerTestRunner(200, test); runner.Execute(verificationEnvelope); AssertUtils.OneError(runner, "NodeLineCoincidence.NodeTooCloseToLine.BetweenFeatures"); }
public void CanReportVertexInLeftTileByNearDistance() { const string testName = "CanReportVertexInLeftTileByNearDistance"; IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName), esriGeometryType.esriGeometryPoint); IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName), esriGeometryType.esriGeometryPolyline); var nearClasses = new List <IFeatureClass> { nearClass }; IFeature nodeRow = nodeClass.CreateFeature(); nodeRow.Shape = GeometryFactory.CreatePoint(201, 100); nodeRow.Store(); IFeature nearRow = nearClass.CreateFeature(); nearRow.Shape = CurveConstruction.StartLine(100, 100) .LineTo(100, 199) .LineTo(199, 199) .LineTo(199, 100) .Curve; nearRow.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 2.1); var runner = new QaContainerTestRunner(200, test); runner.Execute(verificationEnvelope); AssertUtils.OneError(runner, "NodeLineCoincidence.NodeTooCloseToLine.BetweenFeatures"); }
public void CanAllowVertexWithinCoincidenceTolerance() { const string testName = "CanAllowVertexWithinCoincidenceTolerance"; IFeatureClass nodeClass = CreateFeatureClass(string.Format("{0}_node", testName), esriGeometryType.esriGeometryPoint); IFeatureClass nearClass = CreateFeatureClass(string.Format("{0}_near", testName), esriGeometryType.esriGeometryPolyline); var nearClasses = new List <IFeatureClass> { nearClass }; IFeature nodeRow = nodeClass.CreateFeature(); nodeRow.Shape = GeometryFactory.CreatePoint(1, 0.1); nodeRow.Store(); IFeature nearRow = nearClass.CreateFeature(); nearRow.Shape = CurveConstruction.StartLine(0, 0) .LineTo(2, 0) .Curve; nearRow.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(nodeClass, nearClasses, 2) { CoincidenceTolerance = 0.2 }; var runner = new QaContainerTestRunner(1000, test); runner.Execute(verificationEnvelope); AssertUtils.NoError(runner); }
public void CanReportWithinFeature() { const string testName = "CanReportWithinFeature"; IFeatureClass lineClass = CreateFeatureClass(string.Format("{0}_near", testName), esriGeometryType.esriGeometryPolyline); var nearClasses = new List <IFeatureClass> { lineClass }; IPolycurve multipartLine = CurveConstruction.StartLine(0, 0) .LineTo(100, 0) .LineTo(101, 0) .LineTo(100, 0) .LineTo(100, 100) .Curve; GeometryUtils.Simplify(multipartLine, true, true); IFeature nearRow = lineClass.CreateFeature(); nearRow.Shape = multipartLine; nearRow.Store(); IEnvelope verificationEnvelope = GeometryFactory.CreateEnvelope(0, 0, 500, 500); var test = new QaNodeLineCoincidence(lineClass, nearClasses, 2); var runner = new QaContainerTestRunner(200, test); runner.Execute(verificationEnvelope); AssertUtils.ExpectedErrors(2, runner.Errors, "NodeLineCoincidence.NodeTooCloseToLine.WithinFeature"); }