/// <summary>
 /// Create a table with the given name.  Set your columns in <see cref="ExplicitColumnDefinitions"/>
 /// </summary>
 public CreateTableArgs(DiscoveredDatabase database, string tableName, string schema)
 {
     Database      = database;
     TableName     = tableName;
     Schema        = schema;
     GuessSettings = new GuessSettingsFactory().Create();
 }
        public void Test_GuessSettingsFactory_Defaults()
        {
            //default is true
            Assert.IsTrue(GuessSettingsFactory.Defaults.CharCanBeBoolean);
            var f        = new GuessSettingsFactory();
            var instance = f.Create();

            Assert.IsTrue(instance.CharCanBeBoolean);

            Assert.IsFalse(instance == GuessSettingsFactory.Defaults);

            //changing static defaults
            GuessSettingsFactory.Defaults.CharCanBeBoolean = false;

            try
            {
                //should change the result of Create to the new default
                Assert.IsFalse(f.Create().CharCanBeBoolean);

                var decider = new DecimalTypeDecider(CultureInfo.CurrentCulture);
                Assert.IsFalse(decider.Settings.CharCanBeBoolean);
            }
            finally
            {
                //set the static default back to not interfere with other tests
                GuessSettingsFactory.Defaults.CharCanBeBoolean = true;
            }
        }
        /// <summary>
        /// Determines behaviour of abstract base.  Call from derived classes to indicate what inter compatible Types you support parsing into / guessing
        /// </summary>
        /// <param name="culture"></param>
        /// <param name="compatibilityGroup">How your Type interacts with other Guessers, e.g. can you fallback from one to another</param>
        /// <param name="typesSupported">All the Types your guesser supports e.g. multiple sizes of int (int32, int16 etc).  These should not overlap with other guessers in the app domain</param>
        protected DecideTypesForStrings(CultureInfo culture, TypeCompatibilityGroup compatibilityGroup, params Type[] typesSupported)
        {
            Culture = culture;

            Settings = new GuessSettingsFactory().Create();

            CompatibilityGroup = compatibilityGroup;

            if (typesSupported.Length == 0)
            {
                throw new ArgumentException(SR.DecideTypesForStrings_DecideTypesForStrings_DecideTypesForStrings_abstract_base_was_not_passed_any_typesSupported_by_implementing_derived_class);
            }

            TypesSupported = new HashSet <Type>(typesSupported);
        }