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); } }
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); }
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); } }
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); }
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); } }