Пример #1
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);
        }
Пример #2
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);
        }
Пример #3
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");
        }
Пример #4
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);
        }
Пример #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);
        }
Пример #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);
        }
Пример #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);
        }