示例#1
0
 /// <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),
     });
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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();
                }
            }
        }