### Question:
CaseTools { public static String camel(String s) { if (s == null) { return null; } final var result = new char[s.length()]; int dst = 0; var capIt = true; for (int src = 0; src < s.length(); src++) { if (s.charAt(src) == '_') { capIt = true; } else { if (capIt) { capIt = false; result[dst++] = Character.toUpperCase(s.charAt(src)); } else { result[dst++] = Character.toLowerCase(s.charAt(src)); } } } return new String(result, 0, dst); }  static String lcase(String s); static String ucase(String s); static String camel(String s); static String snake(String s);  }### Answer:
@Test @DisplayName("camel converts a normal non-empty string") void camelConverts() { assertEquals("ThisIsToBeCameled", camel("THIS_IS_TO_BE_CAMELED")); }
@Test @DisplayName("camel converts a normal non-empty string containing no _") void camelConvertsNo_() { assertEquals("Thisistobecameled", camel("THISISTOBECAMELED")); }
@Test @DisplayName("camel converts an empty string") void camelConvertsEmpty() { assertEquals("", camel("")); }
@Test @DisplayName("camel converts a null string") void camelConvertsNull() { assertEquals(null, camel(null)); }