public void Test11CompareAllPartsWithFinishOk()
        {
            //SETUP
            var comparer = new CompareEfSql();
            ISuccessOrErrors status;

            //EXECUTE
            using (var db = new TestEf6DataTypesDb())
            {
                comparer.CompareEfPartStart(db);
                status = comparer.CompareEfPartWithDb <DataTop>(db);
            }
            using (var db = new TestEf6ComplexDb())
            {
                status.Combine(comparer.CompareEfPartWithDb <DataTop>(db));
            }
            using (var db = new TestEf6PublicPrivateDb())
            {
                status.Combine(comparer.CompareEfPartWithDb <DataTop>(db));
            }
            using (var db = new TestEf6RelationshipsDb())
            {
                status.Combine(comparer.CompareEfPartWithDb <DataTop>(db));
            }
            status.Combine(comparer.CompareEfPartFinalChecks());

            //VERIFY
            status.ShouldBeValid();
            status.Warnings.Count.ShouldEqual(0, string.Join("\n", status.Warnings));
        }
        public void Test45CompareEfPartCompareSameDbTwiceBad()
        {
            using (var db = new TestEf6PublicPrivateDb())
            {
                //SETUP
                var comparer = new CompareEfSql();
                comparer.CompareEfPartStart(db);

                //EXECUTE
                comparer.CompareEfPartWithDb <DataTop>(db).ShouldBeValid();
                var status = comparer.CompareEfPartWithDb <DataTop>(db);     //second time should fail as publicPrivate already used

                //VERIFY
                status.ShouldBeValid(false);
                status.GetAllErrors().ShouldEqual("Missing Table: The SQL database does not contain a table called [dbo].[DataPublicPrivate]. Needed by EF class DataPublicPrivate.");
            }
        }
        public void Test04CompareEfPartRelationshipsDbOk()
        {
            using (var db = new TestEf6RelationshipsDb())
            {
                //SETUP
                var comparer = new CompareEfSql();

                //EXECUTE
                comparer.CompareEfPartStart(db);
                var status = comparer.CompareEfPartWithDb <DataTop>(db);

                //VERIFY
                status.ShouldBeValid();
                status.Warnings.Count.ShouldEqual(0, string.Join("\n", status.Warnings));
            }
        }
        public void Test40CompareEfPartFinishHasMissingTablesBad()
        {
            using (var db = new TestEf6DataTypesDb())
            {
                //SETUP
                var comparer = new CompareEfSql();
                comparer.CompareEfPartStart(db);
                comparer.CompareEfPartWithDb <DataTop>(db).ShouldBeValid();

                //EXECUTE
                var status = comparer.CompareEfPartFinalChecks();

                //VERIFY
                status.ShouldBeValid();
                status.HasWarnings.ShouldEqual(true);
            }
        }