// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using System.Globalization; using NUnit.Framework; using osu.Framework.Allocation; using osu.Game.Extensions; namespace osu.Game.Tests.Extensions { [TestFixture] public class StringDehumanizeExtensionsTest { [Test] [TestCase("single", "Single")] [TestCase("example word", "ExampleWord")] [TestCase("mixed Casing test", "MixedCasingTest")] [TestCase("PascalCase", "PascalCase")] [TestCase("camelCase", "CamelCase")] [TestCase("snake_case", "SnakeCase")] [TestCase("kebab-case", "KebabCase")] [TestCase("i will not break in a different culture", "IWillNotBreakInADifferentCulture", "tr-TR")] public void TestToPascalCase(string input, string expectedOutput, string? culture = null) { using (temporaryCurrentCulture(culture)) Assert.That(input.ToPascalCase(), Is.EqualTo(expectedOutput)); } [Test] [TestCase("single", "single")] [TestCase("example word", "exampleWord")] [TestCase("mixed Casing test", "mixedCasingTest")] [TestCase("PascalCase", "pascalCase")] [TestCase("camelCase", "camelCase")] [TestCase("snake_case", "snakeCase")] [TestCase("kebab-case", "kebabCase")] [TestCase("I will not break in a different culture", "iWillNotBreakInADifferentCulture", "tr-TR")] public void TestToCamelCase(string input, string expectedOutput, string? culture = null) { using (temporaryCurrentCulture(culture)) Assert.That(input.ToCamelCase(), Is.EqualTo(expectedOutput)); } [Test] [TestCase("single", "single")] [TestCase("example word", "example_word")] [TestCase("mixed Casing test", "mixed_casing_test")] [TestCase("PascalCase", "pascal_case")] [TestCase("camelCase", "camel_case")] [TestCase("snake_case", "snake_case")] [TestCase("kebab-case", "kebab_case")] [TestCase("I will not break in a different culture", "i_will_not_break_in_a_different_culture", "tr-TR")] public void TestToSnakeCase(string input, string expectedOutput, string? culture = null) { using (temporaryCurrentCulture(culture)) Assert.That(input.ToSnakeCase(), Is.EqualTo(expectedOutput)); } [Test] [TestCase("single", "single")] [TestCase("example word", "example-word")] [TestCase("mixed Casing test", "mixed-casing-test")] [TestCase("PascalCase", "pascal-case")] [TestCase("camelCase", "camel-case")] [TestCase("snake_case", "snake-case")] [TestCase("kebab-case", "kebab-case")] [TestCase("I will not break in a different culture", "i-will-not-break-in-a-different-culture", "tr-TR")] public void TestToKebabCase(string input, string expectedOutput, string? culture = null) { using (temporaryCurrentCulture(culture)) Assert.That(input.ToKebabCase(), Is.EqualTo(expectedOutput)); } private IDisposable temporaryCurrentCulture(string? cultureName) { var storedCulture = CultureInfo.CurrentCulture; if (cultureName != null) CultureInfo.CurrentCulture = new CultureInfo(cultureName); return new InvokeOnDisposal(() => CultureInfo.CurrentCulture = storedCulture); } } }