Пример #1
0
        private static void CanDetect1ToNUnique([NotNull] IFeatureWorkspace workspace)
        {
            const string uniqueFieldName = "Unique";

            ITable tableOrig;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(
                                    uniqueFieldName, esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    workspace, "Relate1NUnique1", fields);
                for (var i = 0; i < 10; i++)
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                tableOrig = table;
            }
            ITable tableRel;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(
                                    "Ref", esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    workspace, "Relate1NUnique2", fields);
                for (var i = 0; i < 10; i++)
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                tableRel = table;
            }
            IRelationshipClass rel =
                TestWorkspaceUtils.CreateSimple1NRelationship(workspace,
                                                              "rel1NUnique", tableOrig,
                                                              tableRel, uniqueFieldName, "Ref");

            ITable relTab = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin);

            foreach (bool forceInMemoryTableSort in new[] { true, false })
            {
                var test = new QaUnique(relTab, "Relate1NUnique1." + uniqueFieldName)
                {
                    ForceInMemoryTableSorting = forceInMemoryTableSort
                };

                var runner = new QaTestRunner(test);
                runner.Execute();
                AssertUtils.NoError(runner);
            }
        }
Пример #2
0
        private static void TestRelGroupContraints(IFeatureWorkspace ws)
        {
            ITable tableData =
                DatasetUtils.CreateTable(ws, "TblData1",
                                         FieldUtils.CreateOIDField(),
                                         FieldUtils.CreateField("GroupField",
                                                                esriFieldType
                                                                .esriFieldTypeInteger));

            ITable tableRel = DatasetUtils.CreateTable(ws, "TblRel1",
                                                       FieldUtils.CreateOIDField(),
                                                       FieldUtils.CreateTextField(
                                                           "Kostenstelle", 20));

            IRelationshipClass rel = TestWorkspaceUtils.CreateSimple1NRelationship(
                ws, "rel", tableRel, tableData, "ObjectId", "GroupField");

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

            for (int i = 0; i < 20; i++)
            {
                IRow row = tableData.CreateRow();
                row.set_Value(1, 1);
                row.Store();
            }

            for (int i = 0; i < 40; i++)
            {
                IRow row = tableData.CreateRow();
                row.set_Value(1, 2);
                row.Store();
            }

            for (int i = 0; i < 30; i++)
            {
                IRow row = tableData.CreateRow();
                row.set_Value(1, 3);
                row.Store();
            }

            IRow row1 = tableRel.CreateRow();

            row1.set_Value(1, "123456-10");
            row1.Store();

            IRow row2 = tableRel.CreateRow();

            row2.set_Value(1, "123456-11");
            row2.Store();

            IRow row3 = tableRel.CreateRow();

            row3.set_Value(1, "123456-12");
            row3.Store();

            const bool limitToTestedRows = false;
            ITable     relTab            = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin);

            var test = new QaGroupConstraints(relTab,
                                              "IIF(LEN(TblRel1.Kostenstelle) >=6, SUBSTRING(TblRel1.Kostenstelle, 1, 6), '')",
                                              "SUBSTRING(TblRel1.Kostenstelle, 8, 9)", 1,
                                              limitToTestedRows);

            test.SetRelatedTables(new[] { tableData, tableRel });
            using (var runner = new QaTestRunner(test))
            {
                runner.Execute();
                Assert.AreEqual(1, runner.Errors.Count);
            }

            var containerRunner = new QaContainerTestRunner(100, test);

            containerRunner.Execute();
            Assert.AreEqual(1, containerRunner.Errors.Count);
        }
Пример #3
0
        private static void CanDetectNtoMNonUnique([NotNull] IFeatureWorkspace ws)
        {
            const string uniqueFieldName     = "FIELD_UNIQUE";
            const string foreignKeyFieldName = "FOREIGN_KEY_FIELD";
            const string origTableName       = "OrigTable2";
            const string destTableName       = "DestTable2";
            ITable       originTable;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(uniqueFieldName,
                                                       esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    ws, origTableName, fields);
                originTable = table;
            }
            ITable destinationTable;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(
                                    foreignKeyFieldName, esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    ws, destTableName, fields);

                destinationTable = table;
            }

            IRelationshipClass relClass = TestWorkspaceUtils.CreateSimpleMNRelationship(
                ws, "relNonUnique", originTable, destinationTable,
                "OrigFKey", "DestFKey");

            {
                // insert Data
                ((IWorkspaceEdit)ws).StartEditing(false);
                for (var i = 0; i < 10; i++)
                {
                    IRow row = originTable.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                for (var i = 0; i < 10; i++)
                {
                    IRow row = destinationTable.CreateRow();
                    row.set_Value(1, i);
                    row.Store();

                    relClass.CreateRelationship((IObject)originTable.GetRow(i + 1),
                                                (IObject)row);
                }

                {
                    IRow row = destinationTable.CreateRow();
                    row.set_Value(1, 5);
                    row.Store();
                    relClass.CreateRelationship((IObject)originTable.GetRow(5 + 1),
                                                (IObject)row);
                }
                {
                    IRow row = destinationTable.CreateRow();
                    row.set_Value(1, 5);
                    row.Store();
                    relClass.CreateRelationship((IObject)originTable.GetRow(5 + 1),
                                                (IObject)row);
                }
                {
                    IRow row = destinationTable.CreateRow();
                    row.set_Value(1, 7);
                    row.Store();
                    relClass.CreateRelationship((IObject)originTable.GetRow(7 + 1),
                                                (IObject)row);
                }
                ((IWorkspaceEdit)ws).StopEditing(true);
            }

            ITable relTab = TableJoinUtils.CreateQueryTable(relClass, JoinType.InnerJoin);

            foreach (bool forceInMemoryTableSort in new[] { true, false })
            {
                var test = new QaUnique(relTab, origTableName + "." + uniqueFieldName)
                {
                    ForceInMemoryTableSorting = forceInMemoryTableSort
                };

                test.SetRelatedTables(new[] { originTable, destinationTable });

                var runner = new QaTestRunner(test);
                runner.Execute();
                Assert.AreEqual(5, runner.Errors.Count);
            }
        }
Пример #4
0
        private static ITable CanDetect1toNNonUnique([NotNull] IFeatureWorkspace workspace)
        {
            ITable tableOrig;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(
                                    "Unique", esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    workspace, "Relate1NNonUnique1", fields);

                for (var i = 0; i < 10; i++)
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                tableOrig = table;
            }
            ITable tableRel;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(
                                    "Ref", esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(
                    workspace, "Relate1NNonUnique2", fields);
                for (var i = 0; i < 10; i++)
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, 5);
                    row.Store();
                }
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, 5);
                    row.Store();
                }
                {
                    IRow row = table.CreateRow();
                    row.set_Value(1, 7);
                    row.Store();
                }
                tableRel = table;
            }
            IRelationshipClass rel = TestWorkspaceUtils.CreateSimple1NRelationship(
                workspace, "rel1NNonUnique", tableOrig, tableRel, "Unique", "Ref");

            ITable relTab = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin);

            foreach (bool forceInMemoryTableSort in new[] { true, false })
            {
                var test = new QaUnique(relTab, "Relate1NNonUnique1.Unique")
                {
                    ForceInMemoryTableSorting = forceInMemoryTableSort
                };

                test.SetRelatedTables(new[] { tableOrig, tableRel });

                var runner = new QaTestRunner(test);
                runner.Execute();
                Assert.AreEqual(5, runner.Errors.Count);
            }

            return(relTab);
        }
Пример #5
0
        private static void CanDetectNtoMUnique([NotNull] IFeatureWorkspace workspace)
        {
            const string uniqueFieldName     = "FIELD_UNIQUE";
            const string foreignKeyFieldName = "FOREIGN_KEY_FIELD";

            ITable tableOrig;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(uniqueFieldName,
                                                       esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(workspace, "RelateUnique1",
                                                                    fields,
                                                                    null);
                tableOrig = table;
            }
            ITable tableRel;
            {
                IFieldsEdit fields = new FieldsClass();
                fields.AddField(FieldUtils.CreateOIDField());
                fields.AddField(FieldUtils.CreateField(foreignKeyFieldName,
                                                       esriFieldType.esriFieldTypeInteger));
                ITable table = TestWorkspaceUtils.CreateSimpleTable(workspace, "RelateUnique2",
                                                                    fields,
                                                                    null);
                tableRel = table;
            }
            IRelationshipClass rel = TestWorkspaceUtils.CreateSimpleMNRelationship(
                workspace, "NToMRelTable", tableOrig, tableRel, uniqueFieldName,
                foreignKeyFieldName);

            {
                ((IWorkspaceEdit)workspace).StartEditing(false);
                for (var i = 0; i < 10; i++)
                {
                    IRow row = tableOrig.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                }

                for (var i = 0; i < 10; i++)
                {
                    IRow row = tableRel.CreateRow();
                    row.set_Value(1, i);
                    row.Store();
                    rel.CreateRelationship((IObject)tableOrig.GetRow(i + 1),
                                           (IObject)row);
                }

                ((IWorkspaceEdit)workspace).StopEditing(true);
            }

            ITable relTab = TableJoinUtils.CreateQueryTable(rel, JoinType.InnerJoin);

            foreach (bool forceInMemoryTableSort in new[] { true, false })
            {
                var test = new QaUnique(relTab, "RelateUnique1." + uniqueFieldName)
                {
                    ForceInMemoryTableSorting = forceInMemoryTableSort
                };

                var runner = new QaTestRunner(test);
                runner.Execute();
                AssertUtils.NoError(runner);
            }
        }