コード例 #1
0
 private void Awake()
 {
     _canvas = GetComponent <Canvas>();
     _localizationOptionsFilepath  = Path.Combine(Application.persistentDataPath, "localization.json");
     _lastSavedLocalizationOptions = ScriptableObject.CreateInstance <LocalizationOptions>();
     LoadLocalizationOptions();
 }
コード例 #2
0
 private static void CreateLocalizationOptions(LocalizationOptions options)
 {
     options.Sources = new[]
     {
         new LocalizationSource(ResourceMap.GetLocalizationsRootPath(), LocalizationSourceType.Common),
     };
 }
コード例 #3
0
        public void ShowHelp_WithAmericanLocale_ShowsEnglishHelpText()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("en-US")))
            {
                // Arrange
                var expected = @"Usage: clipr [ -h|--help ] [ --version ] [ --turnonthepower ] [ -s S ] [ -c C ] FILETOADD
Positional Arguments:
 FileToAdd         File to add to the thing.

Optional Arguments:
 --turnonthepower  Set power level to 9001.
 -c                A cool counter.
 -h, --help        Display this help document.
 -s                Start date.
 --version         Displays the version of the current executable.";

                var opt    = new LocalizationOptions();
                var parser = new CliParser <LocalizationOptions>(opt);
                var help   = new AutomaticHelpGenerator <LocalizationOptions>(); // TODO simplify work required to get help info

                // Act
                var actual = help.GetHelp(parser.Config);

                // Assert
                Assert.AreEqual(expected, actual);
            }
        }
コード例 #4
0
        public void EmbeddedResourceAssemblies_ShouldReturnAnEmptyArrayByDefault()
        {
            var localizationOptions = new LocalizationOptions();

            Assert.IsNotNull(localizationOptions.EmbeddedResourceAssemblies);
            Assert.IsFalse(localizationOptions.EmbeddedResourceAssemblies.Any());
        }
        public void JsonDeserialization_ShouldDeserializeCorrectly()
        {
            var expectedLocalizationOptions = new LocalizationOptions
            {
                FileResourcesDirectoryPath = "Test"
            };

            expectedLocalizationOptions.EmbeddedResourceAssemblies.Add(this.AssemblyHelper.Wrap(typeof(string).Assembly).Name);
            expectedLocalizationOptions.EmbeddedResourceAssemblies.Add(this.AssemblyHelper.Wrap(this.GetType().Assembly).Name);

            var localizationOptions = JsonConvert.DeserializeObject <LocalizationOptions>("{\"EmbeddedResourceAssemblies\":[\"System.Private.CoreLib\",\"IntegrationTests\"],\"FileResourcesDirectoryPath\":\"Test\"}");

            Assert.IsTrue(localizationOptions.AlphabeticalSorting);
            Assert.AreEqual(2, localizationOptions.EmbeddedResourceAssemblies.Count);
            Assert.AreEqual("System.Private.CoreLib", localizationOptions.EmbeddedResourceAssemblies.ElementAt(0));
            Assert.AreEqual("IntegrationTests", localizationOptions.EmbeddedResourceAssemblies.ElementAt(1));
            Assert.IsTrue(expectedLocalizationOptions.EmbeddedResourceAssemblies.SequenceEqual(localizationOptions.EmbeddedResourceAssemblies));
            Assert.AreEqual("Test", localizationOptions.FileResourcesDirectoryPath);
            Assert.AreEqual(expectedLocalizationOptions.FileResourcesDirectoryPath, localizationOptions.FileResourcesDirectoryPath);
            Assert.IsFalse(localizationOptions.ThrowErrors);

            localizationOptions = JsonConvert.DeserializeObject <LocalizationOptions>("{\"AlphabeticalSorting\":false,\"EmbeddedResourceAssemblies\":[\"System.Private.CoreLib\",\"IntegrationTests\"],\"FileResourcesDirectoryPath\":\"Test\",\"ThrowErrors\":true}");

            Assert.IsFalse(localizationOptions.AlphabeticalSorting);
            Assert.AreEqual(2, localizationOptions.EmbeddedResourceAssemblies.Count);
            Assert.AreEqual("System.Private.CoreLib", localizationOptions.EmbeddedResourceAssemblies.ElementAt(0));
            Assert.AreEqual("IntegrationTests", localizationOptions.EmbeddedResourceAssemblies.ElementAt(1));
            Assert.IsTrue(expectedLocalizationOptions.EmbeddedResourceAssemblies.SequenceEqual(localizationOptions.EmbeddedResourceAssemblies));
            Assert.AreEqual("Test", localizationOptions.FileResourcesDirectoryPath);
            Assert.AreEqual(expectedLocalizationOptions.FileResourcesDirectoryPath, localizationOptions.FileResourcesDirectoryPath);
            Assert.IsTrue(localizationOptions.ThrowErrors);
        }
コード例 #6
0
 public WebLocalizationManagementService(
     IHttpContextAccessor httpContextAccessor,
     LocalizationOptions localizationOptions)
 {
     _httpContextAccessor = httpContextAccessor;
     _localizationOptions = localizationOptions;
 }
        public void Resolve_IfTheLocalizationOptionsParameterContainsDuplicateEmbeddedResourceAssemblies_ShouldThrowAnInvalidOperationException()
        {
            var serviceProvider = this.BuildServiceProvider("Configuration-Empty.json");

            var localizationOptionsResolver = (LocalizationOptionsResolver)serviceProvider.GetRequiredService <ILocalizationOptionsResolver>();

            var localizationOptions = new LocalizationOptions();

            localizationOptions.EmbeddedResourceAssemblies.Add("System");
            localizationOptions.EmbeddedResourceAssemblies.Add("System");

            try
            {
                localizationOptionsResolver.Resolve(localizationOptions);
            }
            catch (ArgumentException argumentException)
            {
                const string message = "Embedded-resource-assemblies-exception: The patterns-collection can not contain duplicate values. Values: \"System\", \"System\"";

                if (argumentException.Message.StartsWith(message, StringComparison.OrdinalIgnoreCase) && argumentException.ParamName.Equals("patterns", StringComparison.Ordinal))
                {
                    throw;
                }
            }
        }
コード例 #8
0
        public void ShowHelp_WithMexicanLocale_ShowsSpanishHelpText()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("es-MX")))
            {
                // Arrange
                var expected = @"Forma de uso: clipr [ -h|--help ] [ --version ] [ --turnonthepower ] [ -s S ] [ -c C ] FILETOADD
Argumentos dependientes de la posición:
 FileToAdd         Archivo para añadir a la cosa.

Argumentos opcionales:
 --turnonthepower  Establecer el nivel de potencia de 9001.
 -c                Un contador fresco.
 -h, --help        Muestra esta ayuda
 -s                Fecha de inicio.
 --version         Muestra la versión del ejecutable";

                var opt    = new LocalizationOptions();
                var parser = new CliParser <LocalizationOptions>(opt);
                var help   = new AutomaticHelpGenerator <LocalizationOptions>();

                // Act
                var actual = help.GetHelp(parser.Config);

                // Assert
                Assert.AreEqual(expected, actual);
            }
        }
コード例 #9
0
        public void Create_OverloadsProduceSameResult()
        {
            // Arrange
            var locOptions = new LocalizationOptions();
            var options    = new Mock <IOptions <LocalizationOptions> >();

            options.Setup(o => o.Value).Returns(locOptions);

            var resourceLocationAttribute = new ResourceLocationAttribute(Path.Combine("My", "Resources"));
            var loggerFactory             = NullLoggerFactory.Instance;
            var typeFactory = new TestResourceManagerStringLocalizerFactory(
                options.Object,
                resourceLocationAttribute,
                rootNamespaceAttribute: null,
                loggerFactory: loggerFactory);
            var stringFactory = new TestResourceManagerStringLocalizerFactory(
                options.Object,
                resourceLocationAttribute,
                rootNamespaceAttribute: null,
                loggerFactory: loggerFactory);
            var type         = typeof(ResourceManagerStringLocalizerFactoryTest);
            var assemblyName = new AssemblyName(type.Assembly.FullName);

            // Act
            typeFactory.Create(type);
            stringFactory.Create(type.Name, assemblyName.Name);

            // Assert
            Assert.Equal(typeFactory.BaseName, stringFactory.BaseName);
            Assert.Equal(typeFactory.Assembly !.FullName, stringFactory.Assembly !.FullName);
        }
        public void Resolve_IfTheLocalizationOptionsParameterHasARelativeFileResourcesDirectoryPathThatDoesNotExist_ShouldThrowADirectoryNotFoundException()
        {
            var serviceProvider = this.BuildServiceProvider("Configuration-Empty.json");

            var localizationOptionsResolver = (LocalizationOptionsResolver)serviceProvider.GetRequiredService <ILocalizationOptionsResolver>();

            var localizationOptions = new LocalizationOptions
            {
                FileResourcesDirectoryPath = Guid.NewGuid().ToString()
            };

            try
            {
                localizationOptionsResolver.Resolve(localizationOptions);
            }
            catch (DirectoryNotFoundException directoryNotFoundException)
            {
                const string message = "File-resources-directory-exception: The directory ";

                if (directoryNotFoundException.Message.StartsWith(message, StringComparison.OrdinalIgnoreCase))
                {
                    throw;
                }
            }
        }
        public void Resolve_IfTheLocalizationOptionsParameterHasAnAbsoluteFileResourcesDirectoryPathThatDoesNotExist_ShouldThrowADirectoryNotFoundException()
        {
            var serviceProvider = this.BuildServiceProvider("Configuration-Empty.json");

            var localizationOptionsResolver = (LocalizationOptionsResolver)serviceProvider.GetRequiredService <ILocalizationOptionsResolver>();

            var fileResourcesDirectoryPath = "Z:\\" + Guid.NewGuid();

            var localizationOptions = new LocalizationOptions
            {
                FileResourcesDirectoryPath = fileResourcesDirectoryPath
            };

            try
            {
                localizationOptionsResolver.Resolve(localizationOptions);
            }
            catch (DirectoryNotFoundException directoryNotFoundException)
            {
                var message = $"File-resources-directory-exception: The directory \"{fileResourcesDirectoryPath}\" does not exist.";

                if (directoryNotFoundException.Message.Equals(message, StringComparison.OrdinalIgnoreCase))
                {
                    throw;
                }
            }
        }
        public void Resolve_IfTheLocalizationOptionsParameterContainsAnInvalidEmbeddedResourceAssemblyName_ShouldThrowAnInvalidOperationException()
        {
            var serviceProvider = this.BuildServiceProvider("Configuration-Empty.json");

            var localizationOptionsResolver = (LocalizationOptionsResolver)serviceProvider.GetRequiredService <ILocalizationOptionsResolver>();

            var localizationOptions = new LocalizationOptions();

            localizationOptions.EmbeddedResourceAssemblies.Add("Invalid-Assembly-Name");

            try
            {
                localizationOptionsResolver.Resolve(localizationOptions);
            }
            catch (InvalidOperationException invalidOperationException)
            {
                const string message = "Embedded-resource-assemblies-exception: The patterns-collection contains invalid values. Values: \"Invalid-Assembly-Name\"";
                const string innerExceptionMessage = "The assembly \"Invalid-Assembly-Name\" is not loaded at runtime.";

                if (invalidOperationException.Message.Equals(message, StringComparison.OrdinalIgnoreCase) && invalidOperationException.InnerException is InvalidOperationException && invalidOperationException.InnerException.Message.Equals(innerExceptionMessage, StringComparison.OrdinalIgnoreCase))
                {
                    throw;
                }
            }
        }
コード例 #13
0
        public void Constructor_OptionsMonitor_IfTheEmbeddedResourceAssembliesParameterContainNullValues_ShouldThrowAnArguementException()
        {
            var serviceProvider = this.BuildServiceProvider((configuration, services) =>
            {
                var localizationOptions = new LocalizationOptions();
                // ReSharper disable AssignNullToNotNullAttribute
                localizationOptions.EmbeddedResourceAssemblies.Add(null);
                // ReSharper restore AssignNullToNotNullAttribute

                var optionsMonitorMock = new Mock <IOptionsMonitor <LocalizationOptions> >();

                optionsMonitorMock.Setup(optionsMonitor => optionsMonitor.CurrentValue).Returns(localizationOptions);

                services.AddSingleton(optionsMonitorMock.Object);
            }, "Configuration-Empty.json");

            try
            {
                serviceProvider.GetRequiredService <ILocalizationSettings>();
            }
            catch (ArgumentException argumentException)
            {
                const string messageStart = "Embedded-resource-assemblies-exception: The patterns-collection can not contain null-values. Values: null";

                if (argumentException.ParamName.Equals("patterns", StringComparison.Ordinal) && argumentException.Message.StartsWith(messageStart, StringComparison.Ordinal))
                {
                    throw;
                }
            }
        }
コード例 #14
0
        public void Create_ResourceLocationAttribute_UsesRootNamespace()
        {
            // Arrange
            var locOptions = new LocalizationOptions();
            var options    = new Mock <IOptions <LocalizationOptions> >();

            options.Setup(o => o.Value).Returns(locOptions);
            var loggerFactory = NullLoggerFactory.Instance;

            var resourcePath              = Path.Combine("My", "Resources");
            var rootNamespace             = "MyNamespace";
            var resourceLocationAttribute = new ResourceLocationAttribute(resourcePath);
            var rootNamespaceAttribute    = new RootNamespaceAttribute(rootNamespace);

            var typeFactory = new TestResourceManagerStringLocalizerFactory(
                options.Object,
                resourceLocationAttribute,
                rootNamespaceAttribute,
                loggerFactory);

            var type = typeof(ResourceManagerStringLocalizerFactoryTest);

            // Act
            typeFactory.Create(type);

            // Assert
            Assert.Equal($"MyNamespace.My.Resources.ResourceManagerStringLocalizerFactoryTest", typeFactory.BaseName);
        }
コード例 #15
0
 public JsonStringLocalizer(IHostingEnvironment hostingEnvironment, LocalizationOptions options, string baseResourceName, CultureInfo culture)
 {
     _options                = options;
     _hostingEnvironment     = hostingEnvironment;
     _cultureInfo            = culture ?? CultureInfo.CurrentCulture;
     _baseResourceName       = baseResourceName;
     _localizerConfiguration = InitializeLocalizeJson();
 }
コード例 #16
0
        public JsonStringLocalizer(IHostingEnvironment hostingEnvironment, LocalizationOptions options, string baseResourceName, CultureInfo culture)
        {
            _options            = options;
            _hostingEnvironment = hostingEnvironment;

            _cultureInfo      = culture ?? CultureInfo.CurrentUICulture;
            _baseResourceName = baseResourceName + "." + _cultureInfo.Name;
            _all = GetAll();
        }
コード例 #17
0
        private static void SetDefaultCulture(LocalizationOptions options)
        {
            var cultureInfo = new CultureInfo(options.DefaultCulture);

            CultureInfo.DefaultThreadCurrentCulture   = cultureInfo;
            CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

            CultureInfo.CurrentCulture   = cultureInfo;
            CultureInfo.CurrentUICulture = cultureInfo;
        }
コード例 #18
0
        static SR()
        {
            var locOptions = new LocalizationOptions()
            {
                ResourcesPath = "resources"
            };
            var options         = Options.Create <LocalizationOptions>(locOptions);
            var resourceFactory = new ResourceManagerStringLocalizerFactory(options, NullLoggerFactory.Instance);

            localizer = resourceFactory.Create(typeof(SR));
        }
コード例 #19
0
        public void RootNamespace()
        {
            var locOptions = new LocalizationOptions();
            var options    = new Mock <IOptions <LocalizationOptions> >();

            options.Setup(o => o.Value).Returns(locOptions);
            var factory = new ResourceManagerStringLocalizerFactory(options.Object, NullLoggerFactory.Instance);

            var valuesLoc = factory.Create(typeof(ValuesController));

            Assert.Equal("ValFromResource", valuesLoc["String1"]);
        }
コード例 #20
0
 public LocalizedTextXmlProvider(ICurrentUser user
                                 , IWebHelper webHelper
                                 , IOptions <LocalizationOptions> options)
 {
     _webHelper           = webHelper;
     _user                = user;
     _localizationOptions = options.Value;
     if (_user != null && _user.HasValue())
     {
         _langName = ((int)_user.UserSettings.LanguageId).ToString();
     }
     _cache = new CacheManager <List <LocalizedTextLabel> >(LocalizationDefaults.CACHE_KEY, (List <LocalizedTextLabel> l) => { return(LocalizationDefaults.CACHE_KEY + _langName); });
 }
コード例 #21
0
        public void RootNamespace()
        {
            var locOptions = new LocalizationOptions();
            var options    = new Mock <IOptions <LocalizationOptions> >();

            options.Setup(o => o.Value).Returns(locOptions);
            var factory = new ResourceManagerStringLocalizerFactory(options.Object, NullLoggerFactory.Instance);

            var    valuesLoc = factory.Create(typeof(ValuesController));
            string value     = valuesLoc["String1"]; // Note: Tests nullable analysis of implicit string conversion operator.

            Assert.Equal("ValFromResource", value);
        }
コード例 #22
0
 public EntityLocalizer(
     //ICacheManager<List<LocalizedPropertyCached>> cacheManagerList,
     ICacheManager <string> cacheManagerString,
     LocalizedPropertyRepository localizedPropertyRepository,
     LanguageRepository languageRepository,
     IOptionsSnapshot <LocalizationOptions> localizationOptions)
 {
     //_cacheManagerList = cacheManagerList;
     _cacheManagerString          = cacheManagerString;
     _localizedPropertyRepository = localizedPropertyRepository;
     _languageRepository          = languageRepository;
     _localizationOptions         = localizationOptions.Value;
 }
コード例 #23
0
 public CoronaStopLightTelegramMessageService(HttpClient httpClient,
                                              ICoronaStopLightLocalizationService localizationService,
                                              IOptions <TelegramOptions> telegramOptions,
                                              IOptions <LocalizationOptions> localizationOptions,
                                              IOptions <MessageOptions> messageOptions,
                                              ILogger <CoronaStopLightTelegramMessageService> logger)
 {
     _httpClient          = httpClient;
     _localizationService = localizationService;
     _logger              = logger;
     _telegramOptions     = telegramOptions.Value;
     _localizationOptions = localizationOptions.Value;
     _messageOptions      = messageOptions.Value;
 }
        public void Resolve_IfTheLocalizationOptionsParameterHasANullValuedFileResourcesDirectoryPath_ShouldReturnAResolvedLocalizationOptionsWithANullValuedFileResourcesDirectory()
        {
            var serviceProvider = this.BuildServiceProvider("Configuration-Empty.json");

            var localizationOptionsResolver = (LocalizationOptionsResolver)serviceProvider.GetRequiredService <ILocalizationOptionsResolver>();

            var localizationOptions = new LocalizationOptions
            {
                FileResourcesDirectoryPath = null
            };

            var resolvedLocalizationOptions = localizationOptionsResolver.Resolve(localizationOptions);

            Assert.IsNotNull(resolvedLocalizationOptions);
            Assert.IsNull(resolvedLocalizationOptions.FileResourcesDirectory);
        }
コード例 #25
0
        public static IStringLocalizer <T> CreateStringLocalizer()
        {
            var locOptions = new LocalizationOptions
            {
                ResourcesPath = "Resources"
            };
            var options = new Mock <IOptions <LocalizationOptions> >();

            options.Setup(o => o.Value).Returns(locOptions);

            var loggerFactory = NullLoggerFactory.Instance;

            var factory = new ResourceManagerStringLocalizerFactory(options.Object, loggerFactory);

            return(new StringLocalizer <T>(factory));
        }
コード例 #26
0
        public Controller()
        {
            loggerFactory = new LoggerFactory()
                            .AddRobust();
            var locOptions = new LocalizationOptions()
            {
                ResourcesPath = "resources"
            };
            var options = Options.Create <LocalizationOptions>(locOptions);

            resourceFactory = new ResourceManagerStringLocalizerFactory(options, loggerFactory);
            listener        = new LoggerEventListener(
                loggerFactory.CreateLogger <Telemetry>());
            listener.EnableEvents(Controller.Events, EventLevel.Verbose);
            telemetry = new Telemetry();
        }
        public void Create_FromType_ReturnsNewResultForDifferentType()
        {
            // Arrange
            var appEnv = new Mock<IApplicationEnvironment>();
            appEnv.SetupGet(a => a.ApplicationName).Returns("TestApplication");
            var locOptions = new LocalizationOptions();
            var options = new Mock<IOptions<LocalizationOptions>>();
            options.Setup(o => o.Value).Returns(locOptions);
            var factory = new ResourceManagerStringLocalizerFactory(appEnv.Object, localizationOptions: options.Object);

            // Act
            var result1 = factory.Create(typeof(ResourceManagerStringLocalizerFactoryTest));
            var result2 = factory.Create(typeof(LocalizationOptions));

            // Assert
            Assert.NotSame(result1, result2);
        }
        public void Create_FromNameLocation_ReturnsCachedResultForSameNameLocation()
        {
            // Arrange
            var appEnv = new Mock<IApplicationEnvironment>();
            appEnv.SetupGet(a => a.ApplicationName).Returns("TestApplication");
            var locOptions = new LocalizationOptions();
            var options = new Mock<IOptions<LocalizationOptions>>();
            options.Setup(o => o.Value).Returns(locOptions);
            var factory = new ResourceManagerStringLocalizerFactory(appEnv.Object, localizationOptions: options.Object);
            var location = typeof(ResourceManagerStringLocalizer).GetTypeInfo().Assembly.FullName;

            // Act
            var result1 = factory.Create("baseName", location);
            var result2 = factory.Create("baseName", location);

            // Assert
            Assert.Same(result1, result2);
        }
コード例 #29
0
ファイル: LocalizationUnitTest.cs プロジェクト: nemec/clipr
        public void ParseNumber_WithAmericanLocaleAndAmericanNumberFormat_ParsesNumberCorrectly()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("en-US")))
            {
                // Arrange
                var expected = 2.3;

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();

                // Act
                parser.Parse("-c 2.3 file.txt".Split());

                // Assert
                Assert.AreEqual(expected, opt.MyCounter);
            }
        }
コード例 #30
0
ファイル: LocalizationUnitTest.cs プロジェクト: nemec/clipr
        public void ParseDate_WithSpanishLocaleAndSpanishDateFormat_ParsesDateCorrectly()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("es-ES")))
            {
                // Arrange
                var expected = new DateTime(2016, 3, 12);

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();

                // Act
                parser.Parse("-s 12/3/2016 file.txt".Split());

                // Assert
                Assert.AreEqual(expected, opt.StartDate);
            }
        }
コード例 #31
0
ファイル: LocalizationUnitTest.cs プロジェクト: nemec/clipr
        public void ShowHelp_WithMexicanLocale_ShowsSpanishHelpText()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("es-MX")))
            {
                // Arrange
                var expected = @"Uso: clipr [ -h|--help ] [ --version ] [ --turnonthepower ] [ -s S ] [ -c C ] FILETOADD
            Los Argumentos Posicionales:
             FileToAdd         Archivo para añadir a la cosa.

            Los Argumentos Opcionales:
             --turnonthepower  Establecer el nivel de potencia de 9001.
             -c                Un contador fresco.
             -h, --help        Mostrar este documento de ayuda.
             -s                Fecha de inicio.
             --version         Muestra la versión del ejecutable actual.";

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();

                // Act
                var actual = help.GetHelp(parser.Config);

                // Assert
                Assert.AreEqual(expected, actual);
            }
        }
コード例 #32
0
ファイル: LocalizationUnitTest.cs プロジェクト: nemec/clipr
        public void ShowHelp_WithAmericanLocale_ShowsEnglishHelpText()
        {
            using (LocalizationExtensions.WithUiCulture(new CultureInfo("en-US")))
            {
                // Arrange
                var expected = @"Usage: clipr [ -h|--help ] [ --version ] [ --turnonthepower ] [ -s S ] [ -c C ] FILETOADD
            Positional Arguments:
             FileToAdd         File to add to the thing.

            Optional Arguments:
             --turnonthepower  Set power level to 9001.
             -c                A cool counter.
             -h, --help        Display this help document.
             -s                Start date.
             --version         Displays the version of the current executable.";

                var opt = new LocalizationOptions();
                var parser = new CliParser<LocalizationOptions>(opt);
                var help = new AutomaticHelpGenerator<LocalizationOptions>();  // TODO simplify work required to get help info

                // Act
                var actual = help.GetHelp(parser.Config);

                // Assert
                Assert.AreEqual(expected, actual);
            }
        }