From 8410de88312807eb27a75a67cd7b1c02b7cee076 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Thu, 13 Dec 2018 00:19:40 +1300 Subject: [PATCH] #1573 - Incorrect CamelCase conversion when number proceeds uppercase letter --- .../java/io/ebean/util/CamelCaseHelper.java | 2 +- .../io/ebean/util/CamelCaseHelperTest.java | 25 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/ebean/util/CamelCaseHelper.java b/src/main/java/io/ebean/util/CamelCaseHelper.java index d3573309e..c58c78200 100644 --- a/src/main/java/io/ebean/util/CamelCaseHelper.java +++ b/src/main/java/io/ebean/util/CamelCaseHelper.java @@ -26,9 +26,9 @@ public class CamelCaseHelper { } else if (Character.isDigit(c)) { if (i > lastUpper + 1 && !digitsCompressed) { sb.append("_"); + lastUpper = i; } sb.append(c); - lastUpper = i; } else if (Character.isUpperCase(c)) { if (i > lastUpper + 1) { diff --git a/src/test/java/io/ebean/util/CamelCaseHelperTest.java b/src/test/java/io/ebean/util/CamelCaseHelperTest.java index ab5b4af2f..3341071e9 100644 --- a/src/test/java/io/ebean/util/CamelCaseHelperTest.java +++ b/src/test/java/io/ebean/util/CamelCaseHelperTest.java @@ -7,21 +7,36 @@ import static org.junit.Assert.assertEquals; public class CamelCaseHelperTest { @Test - public void when_underscore() throws Exception { - + public void when_underscore() { assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there"), "helloThere"); assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there_jim"), "helloThereJim"); } @Test - public void when_trailing_numbers() throws Exception { - + public void when_trailing_numbers() { assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_1"), "hello1"); assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there_2"), "helloThere2"); } @Test - public void when_already_camel() throws Exception { + public void when_numbers() { + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello1_id"), "hello1Id"); + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there2_foo"), "helloThere2Foo"); + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello1id"), "hello1id"); + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there2foo"), "helloThere2foo"); + } + + @Test + public void when_numbersProceedUppercase() { + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello1_id"), "hello1Id"); + assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello_there2_foo"), "helloThere2Foo"); + + assertEquals(CamelCaseHelper.toUnderscoreFromCamel("hello1Id"), "hello1_id"); + assertEquals(CamelCaseHelper.toUnderscoreFromCamel("helloThere2Foo"), "hello_there2_foo"); + } + + @Test + public void when_already_camel() { assertEquals(CamelCaseHelper.toCamelFromUnderscore("helloThere"), "helloThere"); assertEquals(CamelCaseHelper.toCamelFromUnderscore("helloThereJim"), "helloThereJim"); assertEquals(CamelCaseHelper.toCamelFromUnderscore("hello"), "hello");