public void TestReportDuplicatesPairwise()
        {
            IFeatureClass featureClass = CreateLineFeatureClass(_testWs, "TestCombinedLists");

            // make sure the table is known by the workspace
            ((IWorkspaceEdit)_testWs).StartEditing(false);
            ((IWorkspaceEdit)_testWs).StopEditing(true);

            IPolycurve shape1 = CurveConstruction.StartLine(100, 0)
                                .LineTo(200, 0)
                                .Curve;

            IPolycurve shape2 = CurveConstruction.StartLine(200, 100)
                                .LineTo(300, 100)
                                .Curve;

            IPolycurve shape3 = CurveConstruction.StartLine(300, 200)
                                .LineTo(400, 200)
                                .Curve;

            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            // first set of duplicates
            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            // second set of duplicates
            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            var test = new QaDuplicateGeometrySelf(featureClass, null, false);

            var testRunner = new QaContainerTestRunner(1000, test);

            testRunner.Execute();

            Assert.AreEqual(9, testRunner.Errors.Count);
        }
        public void TestReportSingleErrorPerDuplicateSet()
        {
            IFeatureClass featureClass = CreateLineFeatureClass(
                _testWs, "TestReportSingleErrorPerDuplicateSet");

            // make sure the table is known by the workspace
            ((IWorkspaceEdit)_testWs).StartEditing(false);
            ((IWorkspaceEdit)_testWs).StopEditing(true);

            IPolycurve shape1 = CurveConstruction.StartLine(100, 0)
                                .LineTo(200, 0)
                                .Curve;

            IPolycurve shape2 = CurveConstruction.StartLine(200, 100)
                                .LineTo(300, 100)
                                .Curve;

            IPolycurve shape3 = CurveConstruction.StartLine(300, 200)
                                .LineTo(400, 200)
                                .Curve;

            IPolycurve shape4 = CurveConstruction.StartLine(300, 300)
                                .LineTo(400, 300)
                                .Curve;

            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            AddFeature(featureClass, shape4);

            // 1. set of duplicates
            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            // 2. set of duplicates
            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape3);

            // add more duplicates, per geometry

            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape1);
            AddFeature(featureClass, shape1);

            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape2);
            AddFeature(featureClass, shape2);

            AddFeature(featureClass, shape3);
            AddFeature(featureClass, shape3);
            AddFeature(featureClass, shape3);

            var test = new QaDuplicateGeometrySelf(featureClass, null, true);

            var testRunner = new QaContainerTestRunner(50, test);

            testRunner.Execute();
            IList <QaError> errors = testRunner.Errors;

            Assert.AreEqual(3, errors.Count);
            Assert.AreEqual(6, errors[0].InvolvedRows.Count);
            Assert.AreEqual(6, errors[1].InvolvedRows.Count);
            Assert.AreEqual(6, errors[2].InvolvedRows.Count);
        }