Beispiel #1
0
        public void TestNonEqualCoordinatesTextFieldsBothXYJustBelowTolerance()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameX, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameY, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameZ, 50));

            // create point feature
            const double x = 2600000.12345;
            const double y = 1200000.12345;

            IFeature feature = CreateFeature(
                featureClass,
                x, string.Format(_cultureInfo, "{0:N3}", x + 0.9 * _xyTolerance),
                y, string.Format(_cultureInfo, "{0:N3}", y - 0.9 * _xyTolerance),
                z: 100, zFieldValue: "100");

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture);

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            AssertUtils.OneError(runner,
                                 "ValidCoordinateFields.XYFieldCoordinatesTooFarFromShape");
        }
Beispiel #2
0
        public void TestAllowedCoordinatesForUndefinedShape()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameX));
            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameY));
            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameZ));

            // create point feature
            const double x = 2600000;
            const double y = 1200000;
            const double z = 500;

            IFeature feature = CreateFeature(featureClass,
                                             x, x,
                                             y, y,
                                             z, z);

            feature.Shape.SetEmpty();

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture)
            {
                AllowXYFieldValuesForUndefinedShape = true,
                AllowZFieldValueForUndefinedShape   = true
            };

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            Assert.AreEqual(0, runner.Errors.Count);
        }
Beispiel #3
0
        public void TestEqualCoordinatesTextFields()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameX, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameY, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameZ, 50));

            // create point feature
            const double x = 2600000.12345;
            const double y = 1200000.12345;
            const double z = 500.12345;

            IFeature feature = CreateFeature(
                featureClass,
                x, string.Format(_cultureInfo, "{0:N3}", x),
                y, string.Format(_cultureInfo, "{0:N3}", y),
                z, string.Format(_cultureInfo, "{0:N3}", z));

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture);

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            Assert.AreEqual(0, runner.Errors.Count);
        }
Beispiel #4
0
        public void TestNonEqualXCoordinateDoubleField()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameX));

            // create point feature
            const double x = 2600000;
            const double y = 1200000;
            const double z = 500;

            IFeature feature = CreateFeature(featureClass,
                                             x, x + 1.01 * _xyTolerance,
                                             y, null,
                                             z, null);

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, null, null,
                                                   _xyTolerance, _zTolerance, _culture);

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            QaError error;

            AssertUtils.OneError(runner,
                                 "ValidCoordinateFields.XYFieldCoordinateValueTooFarFromShape",
                                 out error);
            Assert.AreEqual(_fieldNameX, error.AffectedComponent);
        }
Beispiel #5
0
        public void TestNonEqualCoordinatesTextFieldsEqualY()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameX, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameY, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameZ, 50));

            // create point feature
            const double x = 2600000.12345;
            const double y = 1200000.12345;
            const double z = 500.12345;

            IFeature feature = CreateFeature(
                featureClass,
                x, string.Format(_cultureInfo, "{0:N3}", x + 1.01 * _xyTolerance),
                y, string.Format(_cultureInfo, "{0:N3}", y),
                z, string.Format(_cultureInfo, "{0:N3}", z + 1.01 * _zTolerance));

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture);

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            Assert.AreEqual(2, runner.Errors.Count);

            QaError xyError = runner.Errors[0];

            IssueCode xyIssueCode = xyError.IssueCode;

            Assert.IsNotNull(xyIssueCode);
            Assert.AreEqual("ValidCoordinateFields.XYFieldCoordinateValueTooFarFromShape",
                            xyIssueCode.ID);

            QaError zError = runner.Errors[1];

            IssueCode zIssueCode = zError.IssueCode;

            Assert.IsNotNull(zIssueCode);
            Assert.AreEqual("ValidCoordinateFields.ZFieldCoordinateTooFarFromShape",
                            zIssueCode.ID);
        }
Beispiel #6
0
        public void TestMissingXYCoordinatesForDefinedShape()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameX));
            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameY));
            featureClass.AddField(FieldUtils.CreateDoubleField(_fieldNameZ));

            // create point feature
            const double x = 2600000;
            const double y = 1200000;
            const double z = 500;

            IFeature feature = CreateFeature(featureClass,
                                             x, null,
                                             y, null,
                                             z, z);

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture)
            {
                AllowMissingXYFieldValueForDefinedShape = false,
                AllowMissingZFieldValueForDefinedShape  = false
            };

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            Assert.AreEqual(2, runner.Errors.Count);

            foreach (QaError error in runner.Errors)
            {
                IssueCode issueCode = error.IssueCode;
                Assert.IsNotNull(issueCode);
                Assert.AreEqual(
                    "ValidCoordinateFields.ShapeIsDefinedButCoordinateFieldHasNoValue",
                    issueCode.ID);
            }

            Assert.AreEqual(_fieldNameX, runner.Errors[0].AffectedComponent);
            Assert.AreEqual(_fieldNameY, runner.Errors[1].AffectedComponent);
        }
Beispiel #7
0
        public void TestInvalidTextFieldValues()
        {
            var featureClass = new FeatureClassMock(1, "Fc", esriGeometryType.esriGeometryPoint);

            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameX, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameY, 50));
            featureClass.AddField(FieldUtils.CreateTextField(_fieldNameZ, 50));

            // create point feature
            const double x = 2600000.12345;
            const double y = 1200000.12345;
            const double z = 500.12345;

            IFeature feature = CreateFeature(featureClass,
                                             x, "a",
                                             y, "b",
                                             z, "c");

            var test = new QaValidCoordinateFields(featureClass,
                                                   _fieldNameX, _fieldNameY, _fieldNameZ,
                                                   _xyTolerance, _zTolerance, _culture);

            var runner = new QaTestRunner(test);

            runner.Execute(feature);

            Assert.AreEqual(3, runner.Errors.Count);

            foreach (QaError error in runner.Errors)
            {
                IssueCode issueCode = error.IssueCode;
                Assert.IsNotNull(issueCode);
                Assert.AreEqual("ValidCoordinateFields.TextFieldValueIsNotNumeric",
                                issueCode.ID);
            }

            Assert.AreEqual(_fieldNameX, runner.Errors[0].AffectedComponent);
            Assert.AreEqual(_fieldNameY, runner.Errors[1].AffectedComponent);
            Assert.AreEqual(_fieldNameZ, runner.Errors[2].AffectedComponent);
        }
        public void CanTestConstraint()
        {
            ISpatialReference sref = SpatialReferenceUtils.CreateSpatialReference(
                WellKnownHorizontalCS.LV95);

            var multiPatchClass = new FeatureClassMock(
                1, "multipatch", esriGeometryType.esriGeometryMultiPatch,
                esriFeatureType.esriFTSimple, sref);

            multiPatchClass.AddField("Level", esriFieldType.esriFieldTypeInteger);
            int levelIndex = multiPatchClass.FindField("Level");

            var polygonClass = new FeatureClassMock(
                1, "polygon", esriGeometryType.esriGeometryPolygon,
                esriFeatureType.esriFTSimple, sref);

            polygonClass.AddField("Level", esriFieldType.esriFieldTypeInteger);

            var multiPatchConstruction = new MultiPatchConstruction();

            multiPatchConstruction.StartOuterRing(0, 0, 0)
            .Add(5, 0, 0)
            .Add(5, 1, 5)
            .Add(0, 1, 5);

            IFeature multiPatchRow =
                multiPatchClass.CreateFeature(multiPatchConstruction.MultiPatch);

            multiPatchRow.set_Value(levelIndex, 2);

            CurveConstruction curveConstruction =
                CurveConstruction.StartPoly(0, 0, 50)
                .LineTo(10, 0, 50)
                .LineTo(0, 10, 50);

            IFeature polygonRow =
                polygonClass.CreateFeature(curveConstruction.ClosePolygon());

            polygonRow.set_Value(levelIndex, 1);

            var test = new QaZDifferenceSelfWrapper(
                new[] { (IFeatureClass)multiPatchClass, polygonClass },
                20, 0,
                ZComparisonMethod.BoundingBox,
                "U.Level > L.Level");

            var runner     = new QaTestRunner(test);
            int errorCount = test.TestDirect(multiPatchRow, 0, polygonRow, 1);

            Assert.AreEqual(1, errorCount);
            Assert.AreEqual(1, runner.Errors.Count);
        }
Beispiel #9
0
        public void CanFormatRowWithFieldNameContainedInOtherField()
        {
            // TOP-5056: Field PLZ_ZZ and PLZ are both present in the feature class:
            const string name      = "TESTCLASS";
            const string aliasName = "Test FeatureClass";

            var featureClassMock = new FeatureClassMock(
                1, name, aliasName, esriGeometryType.esriGeometryPolyline);

            featureClassMock.AddField("NAME", esriFieldType.esriFieldTypeString);
            featureClassMock.AddField("PLZ", esriFieldType.esriFieldTypeInteger);
            featureClassMock.AddField("PLZ_ZZ", esriFieldType.esriFieldTypeInteger);

            IFeature feature = featureClassMock.CreateFeature();

            var plz = 5023;
            var zz  = 2;

            feature.Value[feature.Fields.FindField("PLZ")]    = plz;
            feature.Value[feature.Fields.FindField("PLZ_ZZ")] = zz;

            Assert.AreEqual($"{plz}_{zz}", RowFormat.Format(@"{PLZ}_{PLZ_ZZ}", feature));
        }
Beispiel #10
0
        public void CanFormatRow()
        {
            const string name      = "TESTCLASS";
            const string aliasName = "Test FeatureClass";

            var featureClassMock = new FeatureClassMock(
                1, name, aliasName, esriGeometryType.esriGeometryPolyline);

            featureClassMock.AddField("NAME", esriFieldType.esriFieldTypeString);
            featureClassMock.AddField("PLZ", esriFieldType.esriFieldTypeInteger);

            IFeature feature = featureClassMock.CreateFeature();

            Assert.AreEqual($"{feature.OID}", RowFormat.Format(feature));
            Assert.AreEqual($"{aliasName} - {feature.OID}", RowFormat.Format(feature, true));

            var plz = 5023;

            feature.Value[feature.Fields.FindField("PLZ")] = plz;

            Assert.AreEqual($": {plz}", RowFormat.Format(@"{NAME}: {PLZ}", feature));
            Assert.AreEqual($"<null>: {plz}",
                            RowFormat.Format(@"{NAME}: {PLZ}", feature, "<null>"));
        }