From 047b4b1aa2c248bdd9bead7d32575e94d5d3a57a Mon Sep 17 00:00:00 2001 From: Hussachai Puripunpinyo Date: Thu, 18 Feb 2016 20:51:56 -0800 Subject: [PATCH 1/2] fix JavaBeans naming convention #1023 --- src/core/lombok/core/handlers/HandlerUtil.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/lombok/core/handlers/HandlerUtil.java b/src/core/lombok/core/handlers/HandlerUtil.java index a9a4be7805..0eedea4f81 100644 --- a/src/core/lombok/core/handlers/HandlerUtil.java +++ b/src/core/lombok/core/handlers/HandlerUtil.java @@ -420,11 +420,11 @@ public static String buildAccessorName(String prefix, String suffix) { char first = suffix.charAt(0); if (Character.isLowerCase(first)) { - boolean useUpperCase = suffix.length() > 2 && + boolean useLowerCase = suffix.length() >= 2 && (Character.isTitleCase(suffix.charAt(1)) || Character.isUpperCase(suffix.charAt(1))); suffix = String.format("%s%s", - useUpperCase ? Character.toUpperCase(first) : Character.toTitleCase(first), - suffix.subSequence(1, suffix.length())); + useLowerCase ? Character.toLowerCase(first) : Character.toUpperCase(first), + suffix.subSequence(1, suffix.length())); } return String.format("%s%s", prefix, suffix); } From e4b29e5a3c6933069ff72912f7dbbc4578df9d44 Mon Sep 17 00:00:00 2001 From: Hussachai Puripunpinyo Date: Fri, 19 Feb 2016 10:09:42 -0800 Subject: [PATCH 2/2] add test case for core.handlers.HandlerUtil.buildAccessorName --- test/core/src/lombok/core/RunCoreTests.java | 2 +- .../core/src/lombok/core/TestHandlerUtil.java | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/core/src/lombok/core/TestHandlerUtil.java diff --git a/test/core/src/lombok/core/RunCoreTests.java b/test/core/src/lombok/core/RunCoreTests.java index 8ac7cf816b..ca276713b6 100644 --- a/test/core/src/lombok/core/RunCoreTests.java +++ b/test/core/src/lombok/core/RunCoreTests.java @@ -26,6 +26,6 @@ import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) -@SuiteClasses({TestSingulars.class}) +@SuiteClasses({TestSingulars.class, TestHandlerUtil.class}) public class RunCoreTests { } diff --git a/test/core/src/lombok/core/TestHandlerUtil.java b/test/core/src/lombok/core/TestHandlerUtil.java new file mode 100644 index 0000000000..17924c6191 --- /dev/null +++ b/test/core/src/lombok/core/TestHandlerUtil.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015 The Project Lombok Authors. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.core; + +import static lombok.core.handlers.HandlerUtil.buildAccessorName; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import org.junit.Test; + +public class TestHandlerUtil { + + @Test + public void testBuildAccessorName() { + + /* normal cases */ + assertEquals("setFieldName", buildAccessorName("set", "fieldName")); + assertEquals("setI", buildAccessorName("set", "i")); + assertEquals("setI", buildAccessorName("set", "I")); + assertEquals("setUrl", buildAccessorName("set", "Url")); + + /* when the second character is uppercase, leave the first character unchanged */ + assertEquals("setURL", buildAccessorName("set", "URL")); + assertEquals("setaI", buildAccessorName("set", "aI")); + assertEquals("setaIr", buildAccessorName("set", "aIr")); + + /* handle empty string cases */ + assertEquals("URL", buildAccessorName("", "URL")); + assertEquals("set", buildAccessorName("set", "")); + try{ + buildAccessorName("set", null); + buildAccessorName(null, "something"); + fail("it's not supposed to be null"); + }catch(NullPointerException e){} + } +}