public void VerifyAzimuthsInToleranceNotReported() { var featureClassMock = new FeatureClassMock(1, "mock", esriGeometryType.esriGeometryMultiPatch); // make sure the table is known by the workspace const double azimuthToleranceDeg = 0.5; const double dy = 10; double xLimit = dy * Math.Tan(MathUtils.ToRadians(azimuthToleranceDeg)); double xError = xLimit + 0.001; var construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0, dy, 0) .Add(xError, 2 * dy, 0) .Add(xError, 3 * dy, 0) .Add(8, 4, 0); IFeature row1 = featureClassMock.CreateFeature(construction.MultiPatch); var test = new QaMpHorizontalAzimuths(featureClassMock, 5, azimuthToleranceDeg, 0, false); var runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(1, runner.Errors.Count); double xNoError = xLimit - 0.001; construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0, dy, 0) .Add(xNoError, 2 * dy, 0) .Add(xNoError, 3 * dy, 0) .Add(8, 4, 0); row1 = featureClassMock.CreateFeature(construction.MultiPatch); test = new QaMpHorizontalAzimuths(featureClassMock, 5, azimuthToleranceDeg, 0, false); runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(0, runner.Errors.Count); }
public void VerifyNotHorizontalLinesIgnored() { var featureClassMock = new FeatureClassMock(1, "mock", esriGeometryType.esriGeometryMultiPatch); // make sure the table is known by the workspace const double horizontalToleranceDeg = 1; const double dy = 10; double zLimit = dy * Math.Tan(MathUtils.ToRadians(horizontalToleranceDeg)); double zNotTested = zLimit + 0.001; var construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0.01, dy, zNotTested) .Add(0, 2 * dy, 0) .Add(-0.01, 3 * dy, zNotTested) .Add(8, 4, 0); IFeature row1 = featureClassMock.CreateFeature(construction.MultiPatch); var test = new QaMpHorizontalAzimuths(featureClassMock, 5, 0, horizontalToleranceDeg, false); var runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(0, runner.Errors.Count); double zTested = zLimit - 0.001; construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0.01, dy, zTested) .Add(0, 2 * dy, 0) .Add(-0.01, 3 * dy, zTested) .Add(8, 4, 0); row1 = featureClassMock.CreateFeature(construction.MultiPatch); test = new QaMpHorizontalAzimuths(featureClassMock, 5, 0, horizontalToleranceDeg, false); runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(1, runner.Errors.Count); }
public void VerifyAnglesLargerNearAngleNotChecked() { var featureClassMock = new FeatureClassMock(1, "mock", esriGeometryType.esriGeometryMultiPatch); // make sure the table is known by the workspace const double nearAngle = 5; const double dy = 10; double xLimit = dy * Math.Tan(MathUtils.ToRadians(nearAngle)); double xNotChecked = xLimit + 0.001; var construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0, dy, 0) .Add(xNotChecked, 2 * dy, 0) .Add(xNotChecked, 3 * dy, 0) .Add(8, 4, 0); IFeature row1 = featureClassMock.CreateFeature(construction.MultiPatch); var test = new QaMpHorizontalAzimuths(featureClassMock, nearAngle, 0, 0, false); var runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(0, runner.Errors.Count); double xChecked = xLimit - 0.001; construction = new MultiPatchConstruction(); construction.StartOuterRing(0, 0, 0) .Add(0, dy, 0) .Add(xChecked, 2 * dy, 0) .Add(xChecked, 3 * dy, 0) .Add(8, 4, 0); row1 = featureClassMock.CreateFeature(construction.MultiPatch); test = new QaMpHorizontalAzimuths(featureClassMock, nearAngle, 0, 0, false); runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(1, runner.Errors.Count); }
public void CanTestMultiPatches() { var featureClassMock = new FeatureClassMock(1, "mock", esriGeometryType.esriGeometryMultiPatch); // make sure the table is known by the workspace var construction = new MultiPatchConstruction(); construction.StartOuterRing(5, 4, 0).Add(5, 8, 0).Add(8, 8, 0).Add(8, 4, 0) .StartInnerRing(6, 5, 0).Add(6.01, 7, 0).Add(7, 7, 0); IFeature row1 = featureClassMock.CreateFeature(construction.MultiPatch); var test = new QaMpHorizontalAzimuths(featureClassMock, 5, 0, 0, false); var runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(1, runner.Errors.Count); }
public void VerifySegmentsGroupContinuously() { var featureClassMock = new FeatureClassMock(1, "mock", esriGeometryType.esriGeometryMultiPatch); // make sure the table is known by the workspace const double nearAngle = 5; const double y = 10; var construction = new MultiPatchConstruction(); double xi = 0; double yi = y; construction.StartOuterRing(0, 0, 0) .Add(xi, yi, 0); double angleRad = 1.01 * MathUtils.ToRadians(nearAngle); for (int i = 1; i < 4; i++) { double currentAngle = i * angleRad; double dx = y * Math.Sin(currentAngle); double dy = y * Math.Cos(currentAngle); xi += dx; yi += dy; construction.Add(xi, yi, 0); } construction.Add(20, 0, 0); IFeature row1 = featureClassMock.CreateFeature(construction.MultiPatch); var test = new QaMpHorizontalAzimuths(featureClassMock, nearAngle, 0, 0, false); var runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(0, runner.Errors.Count); construction = new MultiPatchConstruction(); xi = 0; yi = y; construction.StartOuterRing(0, 0, 0) .Add(xi, yi, 0); angleRad = 0.99 * MathUtils.ToRadians(nearAngle); for (int i = 1; i < 4; i++) { double currentAngle = i * angleRad; double dx = y * Math.Sin(currentAngle); double dy = y * Math.Cos(currentAngle); xi += dx; yi += dy; construction.Add(xi, yi, 0); } construction.Add(20, 0, 0); row1 = featureClassMock.CreateFeature(construction.MultiPatch); test = new QaMpHorizontalAzimuths(featureClassMock, nearAngle, 0, 0, false); runner = new QaTestRunner(test); runner.Execute(row1); Assert.AreEqual(1, runner.Errors.Count); }