/// <summary> /// Merges specified user and default configurations. /// </summary> /// <param name="userConfig">The user configuration.</param> /// <param name="defaultConfig">The default configuration.</param> /// <returns>A new configuration object with values stored in the user configuration /// if there are any or values stored in the default configuration otherwise.</returns> private static DefaultsConfiguration _Merge( DefaultsConfig userConfig, DefaultsConfig defaultConfig) { return(new DefaultsConfiguration { CapacitiesDefaults = _Merge( userConfig.CapacitiesDefaults, defaultConfig.CapacitiesDefaults), FuelTypesDefaults = _Merge( userConfig.FuelTypesDefaults, defaultConfig.FuelTypesDefaults), LocationsDefaults = _Merge( userConfig.LocationsDefaults, defaultConfig.LocationsDefaults), OrdersDefaults = _Merge( userConfig.OrdersDefaults, defaultConfig.OrdersDefaults), RoutesDefaults = _Merge( userConfig.RoutesDefaults, defaultConfig.RoutesDefaults), VehiclesDefaults = _Merge( userConfig.VehiclesDefaults, defaultConfig.VehiclesDefaults), DriversDefaults = _Merge( userConfig.DriversDefaults, defaultConfig.DriversDefaults), CustomOrderProperties = _Merge( userConfig.CustomOrderProperties, defaultConfig.CustomOrderProperties), }); }
public async Task TestDefaultMultiples(Multiple[] multiples) { const int min = 1, max = 100; var config = new DefaultsConfig { DefaultMinValue = min, DefaultMaxValue = max, DefaultMultiples = multiples }; var service = new FizzBuzzService(config); var result = await service.FizzBuzz(); FizzBuzzValidation(min, max, result, multiples); }
public async Task TestDefaults(int min, int max) { var multiples = new[] { new Multiple { Name = "Fizz", Value = 3 } }; var config = new DefaultsConfig { DefaultMinValue = min, DefaultMaxValue = max, DefaultMultiples = multiples }; var service = new FizzBuzzService(config); var result = await service.FizzBuzz(); FizzBuzzValidation(min, max, result, multiples); }
/// <summary> /// Converts DefaultsConfiguration to DefaultsConfig which can be serialized to the XML file. /// </summary> /// <param name="defaultsConfiguration">DefaultsConfiguration object.</param> /// <returns>Converted object.</returns> private DefaultsConfig _ConvertToDefaultsConfig(DefaultsConfiguration defaultsConfiguration) { Debug.Assert(defaultsConfiguration != null); DefaultsConfig defaultsConfig = new DefaultsConfig(); defaultsConfig.CapacitiesDefaults = defaultsConfiguration.CapacitiesDefaults; defaultsConfig.FuelTypesDefaults = defaultsConfiguration.FuelTypesDefaults; defaultsConfig.LocationsDefaults = _ConvertLocationsDefaultsToConfig(defaultsConfiguration.LocationsDefaults); defaultsConfig.OrdersDefaults = _ConvertOrderDefaultsToConfig(defaultsConfiguration.OrdersDefaults); defaultsConfig.RoutesDefaults = _ConvertRoutesDefaultsToConfig(defaultsConfiguration.RoutesDefaults); defaultsConfig.VehiclesDefaults = _ConvertVehiclesDefaultsToConfig(defaultsConfiguration.VehiclesDefaults); defaultsConfig.DriversDefaults = _ConvertDriversDefaultsToConfig(defaultsConfiguration.DriversDefaults); defaultsConfig.CustomOrderProperties = defaultsConfiguration.CustomOrderProperties; return(defaultsConfig); }
/// <summary> /// Saves defaults settings. /// </summary> /// <exception cref="SettingsException">Failed to save defaults.</exception> public void Save() { XmlWriter xmlWriter = null; try { // Create XML serializer. XmlSerializer xmlSerializer = new XmlSerializer(typeof(DefaultsConfig)); // XML settings. XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = CommonHelpers.XML_SETTINGS_INDENT_CHARS; // Create XML writer. xmlWriter = XmlWriter.Create(DefaultsFilePath, settings); Debug.Assert(_defaultConfig != null); // Convert defaults configuration to the format which can be serialized. DefaultsConfig defaultsConfig = _ConvertToDefaultsConfig(_defaultConfig); // Serialize data to the XML file. xmlSerializer.Serialize(xmlWriter, defaultsConfig); } catch (InvalidOperationException ex) { throw new SettingsException(ex.Message, ex); } finally { if (xmlWriter != null) { xmlWriter.Close(); } } }