public void PrimaryKeyCollisionResolverMultilation_Check_ThrowsBecauseNoColumnOrderConfigured()
        {
            TableInfo  t;
            ColumnInfo c1;
            ColumnInfo c2;
            ColumnInfo c3;

            SetupTableInfos(out t, out c1, out c2, out c3);
            try
            {
                var mutilation = new PrimaryKeyCollisionResolverMutilation();
                mutilation.TargetTable = t;
                try
                {
                    mutilation.Check(new ThrowImmediatelyCheckNotifier());
                    Assert.Fail("Should have crashed before here");
                }
                catch (Exception e)
                {
                    Assert.AreEqual("Failed to check PrimaryKeyCollisionResolver on PrimaryKeyCollisionResolverTests", e.Message);
                    Assert.AreEqual("TableInfo PrimaryKeyCollisionResolverTests does not have any primary keys defined so cannot resolve primary key collisions", e.InnerException.Message);
                }
            }
            finally
            {
                t.DeleteInDatabase();
            }
        }
        public void PrimaryKeyCollisionResolverMultilation_Check_Passes()
        {
            TableInfo  t;
            ColumnInfo c1;
            ColumnInfo c2;
            ColumnInfo c3;

            SetupTableInfos(out t, out c1, out c2, out c3);
            try
            {
                var mutilation = new PrimaryKeyCollisionResolverMutilation();
                mutilation.TargetTable = t;

                c1.IsPrimaryKey = true;
                c1.SaveToDatabase();

                c2.DuplicateRecordResolutionOrder       = 1;
                c2.DuplicateRecordResolutionIsAscending = true;
                c2.SaveToDatabase();

                c3.DuplicateRecordResolutionOrder       = 2;
                c3.DuplicateRecordResolutionIsAscending = false;
                c3.SaveToDatabase();

                Assert.DoesNotThrow(() => mutilation.Check(new ThrowImmediatelyCheckNotifier()));
            }
            finally
            {
                t.DeleteInDatabase();
            }
        }
        public void PrimaryKeyCollisionResolverMultilation_Check_ThrowsBecauseNotInitialized()
        {
            var mutilation = new PrimaryKeyCollisionResolverMutilation();

            var ex = Assert.Throws <Exception>(() => mutilation.Check(new ThrowImmediatelyCheckNotifier()));

            StringAssert.Contains("Target table is null, a table must be specified upon which to resolve primary key duplication (that TableInfo must have a primary key collision resolution order)", ex.Message);
        }