public TableDefinitionInterrogationStrategy GetTableDefinitionInterrogationStrategy(TableDefinitionInterrogationStrategyType strategyType)
 {
     switch (strategyType)
     {
         case TableDefinitionInterrogationStrategyType.DataReaderSchema:
             return new DataReaderSchemaTableDefinitionInterrogationStrategy(connectionString);
         case TableDefinitionInterrogationStrategyType.SystemTables:
             return new SystemTablesTableDefinitionInterrogationStrategy(connectionString);
         default:
             throw new ArgumentException("Invalid strategy type", "strategy type");
     }
 }
 private TableDefinition GetDefinition(DatabaseObjectName tableName, TableDefinitionInterrogationStrategyType strategyType)
 {
     var factory = new TableDefinitionInterrogationStrategyFactory(connectionString);
     var strategy = factory.GetTableDefinitionInterrogationStrategy(strategyType);
     return strategy.GetTableDefinition(tableName);
 }
 public void VerifyMatchOrSubset(TableDefinition expected, TableDefinitionInterrogationStrategyType strategyType = TableDefinitionInterrogationStrategyType.DataReaderSchema)
 {
     expected.VerifyEqualOrSubsetOf(GetDefinition(expected.Name, strategyType));
 }