public string Describe( int subThousands, ILanguageNumbersDescriptor numbersDescriptor ) { var result = string.Empty; if (subThousands > 10000 && subThousands < 20000) { return(string.Empty); } var thousands = (subThousands % 10000) - (subThousands % 1000); if (thousands >= 1000) { result = numbersDescriptor.Vocabulary[thousands]; } if (thousands == 0 && subThousands % 1000000 >= 10000) { result += numbersDescriptor.Vocabulary[-1000]; } return(result); }
public string Describe( int number, ILanguageNumbersDescriptor numbersDescriptor ) { if (number >= 10000000 && number < 20000000) { return(string.Empty); } var result = string.Empty; var millions = (number % 10000000) - (number % 1000000); if (millions >= 1000000) { result = numbersDescriptor.Vocabulary[millions]; } if (millions == 0 && number % 1000000000 >= 10000000) { return(numbersDescriptor.Vocabulary[-1000000]); } return(result); }
public void GetInputData_Test( string expectedLocaly, int expectedNumber, params string[] args ) { // Arrange var expectedValue = new InputData() { LocalizationName = expectedLocaly, Number = expectedNumber }; var logger = new Mock <ILogger>(); var languageNumbersDescriptors = new ILanguageNumbersDescriptor[] { new EnLoсalizationNumbers(), new RuLocalizationNumbers(), new UaLocalizationNumbers() }; var inputDataParser = new InputDataParser(languageNumbersDescriptors, logger.Object); // Act var actualValue = inputDataParser.GetInputData(args); // Assert Assert.Equal(expectedValue.LocalizationName, actualValue.LocalizationName); Assert.Equal(expectedValue.Number, actualValue.Number); }
public string Describe( int number, ILanguageNumbersDescriptor numbersDescriptor ) { var hundreds = (number % 1000) - (number % 100); if (hundreds >= 100) { return(numbersDescriptor.Vocabulary[hundreds]); } return(string.Empty); }
public void GetInputData_NegativeNumbers_Tests(params string[] args) { // Arrange var logger = new Mock <ILogger>(); var languageNumbersDescriptors = new ILanguageNumbersDescriptor[] { new EnLoсalizationNumbers(), new RuLocalizationNumbers(), new UaLocalizationNumbers() }; var inputDataParser = new InputDataParser(languageNumbersDescriptors, logger.Object); // Assert Assert.Throws <ArgumentException>(() => inputDataParser.GetInputData(args)); }
public static string ConvertToString( int number, ILanguageNumbersDescriptor numbersDictionary ) { var result = new StringBuilder(); foreach (var describer in describers) { var part = describer.Describe(number, numbersDictionary); result.Append(part); if (part != string.Empty) { result.Append(" "); } } return(result.ToString().Trim()); }
public string Describe( int number, ILanguageNumbersDescriptor numbersDescriptor ) { var subDozens = number % 100; if (subDozens >= 10 && subDozens < 20) { return(numbersDescriptor.Vocabulary[subDozens]); } var dozens = (number % 100) - (number % 10); if (dozens >= 20) { return(numbersDescriptor.Vocabulary[dozens]); } return(string.Empty); }
public static void Main(string[] args) { var logPath = "application.log"; var logger = new AggregatedLogger( new FileLogger(logPath), new ConsoleLogger() ); try { if (!Validator.IsParametersValid(args)) { logger.LogInformation("Input data must be in format <LocalizationType> <number>"); return; } var languageNumbersDescriptors = new ILanguageNumbersDescriptor[] { new EnLoсalizationNumbers(), new RuLocalizationNumbers(), new UaLocalizationNumbers() }; var inputDataParser = new InputDataParser(languageNumbersDescriptors, logger); var inputData = inputDataParser.GetInputData(args); var localization = languageNumbersDescriptors.First(l => l.Name == inputData.LocalizationName); var result = NumberConverter.ConvertToString(inputData.Number, localization); logger.LogInformation($"Result: {result}"); } catch (Exception ex) { logger.LogInformation(ex.Message); } }
public string Describe( int number, ILanguageNumbersDescriptor numbersDescriptor ) { var units = number % 100; if (units > 10 && units < 20) { return(string.Empty); } units = number % 10; if (units == 0 && number > 0) { return(string.Empty); } return(numbersDescriptor.Vocabulary[units]); }
public string Describe( int number, ILanguageNumbersDescriptor numbersDescriptor ) { var result = string.Empty; var subDozenThousands = (number % 100000) - (number % 1000); if (subDozenThousands > 10000 && subDozenThousands < 20000) { return(numbersDescriptor.Vocabulary[subDozenThousands]); } var dozenThousands = (number % 100000) - (number % 10000); if (dozenThousands >= 10000) { result = numbersDescriptor.Vocabulary[dozenThousands]; } return(result); }