This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit c5d327f8dd530b3219c0cab695cfe34411f314ba Author: Aurélien Pupier <apup...@redhat.com> AuthorDate: Tue Feb 23 15:13:35 2021 +0100 CAMEL-16250 - support more edge cases of dashToCamelCase conversion Signed-off-by: Aurélien Pupier <apup...@redhat.com> --- .../java/org/apache/camel/util/StringHelper.java | 16 ++++---- .../org/apache/camel/util/StringHelperTest.java | 48 +++++++++++++++++++++- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java index 34607c5..686af48 100644 --- a/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java +++ b/core/camel-util/src/main/java/org/apache/camel/util/StringHelper.java @@ -470,14 +470,14 @@ public final class StringHelper { } StringBuilder sb = new StringBuilder(); - - for (int i = 0; i < text.length(); i++) { - char c = text.charAt(i); - if (c == '-') { - i++; - sb.append(Character.toUpperCase(text.charAt(i))); - } else { - sb.append(c); + String[] splittedString = text.split("\\-"); + for (int i = 0; i < splittedString.length; i++) { + String currentToken = splittedString[i]; + if (i == 0) { + sb.append(currentToken); + } else if (!currentToken.isEmpty()) { + sb.append(Character.toUpperCase(currentToken.charAt(0))); + sb.append(currentToken.substring(1)); } } return sb.toString(); diff --git a/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java b/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java index a75e476..ec122ec 100644 --- a/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java +++ b/core/camel-util/src/test/java/org/apache/camel/util/StringHelperTest.java @@ -16,10 +16,12 @@ */ package org.apache.camel.util; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import static org.apache.camel.util.StringHelper.*; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; public class StringHelperTest { @@ -54,6 +56,50 @@ public class StringHelperTest { assertEquals("available-phone-number-country", camelCaseToDash("availablePhoneNumberCountry")); assertEquals("available-phone-number-country", camelCaseToDash("AvailablePhoneNumberCountry")); } + + @Nested + class DashToCamelCase { + + @Test + void testDashToCamelCaseWithNull() throws Exception { + assertThat(dashToCamelCase(null)).isNull(); + } + + @Test + void testDashToCamelCaseWithEmptyValue() throws Exception { + assertThat(dashToCamelCase("")).isEmpty(); + } + + @Test + void testDashToCamelCaseWithNoDash() throws Exception { + assertThat(dashToCamelCase("a")).isEqualTo("a"); + } + + @Test + void testDashToCamelCaseWithOneDash() throws Exception { + assertThat(dashToCamelCase("a-b")).isEqualTo("aB"); + } + + @Test + void testDashToCamelCaseWithSeveralDashes() throws Exception { + assertThat(dashToCamelCase("a-bb-cc-dd")).isEqualTo("aBbCcDd"); + } + + @Test + void testDashToCamelCaseWithEndDash() throws Exception { + assertThat(dashToCamelCase("a-")).isEqualTo("a"); + } + + @Test + void testDashToCamelCaseWithEndDashes() throws Exception { + assertThat(dashToCamelCase("a----")).isEqualTo("a"); + } + + @Test + void testDashToCamelCaseWithSeceralDashesGrouped() throws Exception { + assertThat(dashToCamelCase("a--b")).isEqualTo("aB"); + } + } @Test public void testSplitWords() throws Exception {