From 1b7dd959c7a6f22e3bd8c3358f7238c97a7e7185 Mon Sep 17 00:00:00 2001 From: "Jose.Fajardo" Date: Fri, 9 Oct 2020 17:27:01 +1100 Subject: [PATCH] fix #1480 - ToCamelCase broken for a single word with multiple uppercase sections --- src/RestSharp/Extensions/StringExtensions.cs | 12 +++++++++++- test/RestSharp.Tests/StringExtensionsTests.cs | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/RestSharp/Extensions/StringExtensions.cs b/src/RestSharp/Extensions/StringExtensions.cs index 59f909f01..de7c9b624 100644 --- a/src/RestSharp/Extensions/StringExtensions.cs +++ b/src/RestSharp/Extensions/StringExtensions.cs @@ -222,9 +222,12 @@ public static string ToPascalCase(this string text, bool removeUnderscores, Cult string CaseWord(string word) { - var restOfWord = word.Substring(1).ToLower(culture); + var restOfWord = word.Substring(1); var firstChar = char.ToUpper(word[0], culture); + if (restOfWord.IsUpperCase()) + restOfWord = restOfWord.ToLower(culture); + return string.Concat(firstChar, restOfWord); } } @@ -274,6 +277,13 @@ public static string AddDashes(this string pascalCasedWord) "-" ); + /// + /// Checks to see if a string is all uppper case + /// + /// String to check + /// bool + public static bool IsUpperCase(this string inputString) => IsUpperCaseRegex.IsMatch(inputString); + /// /// Add an underscore prefix to a pascal-cased string /// diff --git a/test/RestSharp.Tests/StringExtensionsTests.cs b/test/RestSharp.Tests/StringExtensionsTests.cs index bae8813c7..8bc4d9263 100644 --- a/test/RestSharp.Tests/StringExtensionsTests.cs +++ b/test/RestSharp.Tests/StringExtensionsTests.cs @@ -66,6 +66,14 @@ public void ToPascalCase(string start, bool removeUnderscores, string finish) Assert.AreEqual(finish, result); } + [Test, TestCase("DueDate", "dueDate"), TestCase("ID", "id"), TestCase("IDENTIFIER", "identifier"), TestCase("primaryId", "primaryId"), TestCase("A", "a"), TestCase("ThisIsATest", "thisIsATest")] + public void ToCamelCase(string start, string finish) + { + var result = start.ToCamelCase(CultureInfo.InvariantCulture); + + Assert.AreEqual(finish, result); + } + [Test] public void Does_not_throw_on_invalid_encoding() {