public void Given_a_tablePair_and_a_CompareResult_then_First_Second_and_Detail_delegates_on_them()
            {
                // Arrange
                var pair = new Pair<Table>(new Table("irrelevant"), new Table("irrelevant"));
                var compareResult = new CompareResult();

                // Act
                var conflict = new SpecificationConflict(pair, compareResult);

                // Assert
                Assert.That(conflict.Detail, Is.SameAs(compareResult));
                Assert.That(conflict.First, Is.EqualTo(pair.First));
                Assert.That(conflict.Second, Is.EqualTo(pair.Second));
            }
 public CompareResult Compare(SchemaSpecification otherSpec)
 {
     CompareResult result = new CompareResult();
     foreach (var eachTable in _tableList)
     {
         Table otherTable = otherSpec.FindTableByName(eachTable.Name);
         if (otherTable == null)
             result.AddMissing(eachTable);
         else
         {
             CompareResult compareResult = eachTable.Compare(otherTable);
             if (compareResult.HaveValues)
             {
                 var conflict = new SpecificationConflict(new Pair<Table>(eachTable, otherTable), compareResult);
                 result.AddConflict(conflict);
             }
         }
     }
     return result;
 }