Skip to content

Instantly share code, notes, and snippets.

@BorzdeG
Created November 8, 2015 22:16
Show Gist options
  • Save BorzdeG/3b0f99d7a6a1ac259ba4 to your computer and use it in GitHub Desktop.
Save BorzdeG/3b0f99d7a6a1ac259ba4 to your computer and use it in GitHub Desktop.
package demo;
import org.apache.commons.lang3.text.WordUtils;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CamelCaseTests {
@DataProvider(name = "data")
public static Object[][] data() {
return new Object[][]{
{"normalCamelCaseName", "normalCamelCaseName", true}
, {"normalCamelCaseName", "NormalCamelCaseName", false}
, {"NotCamelCaseName", "notCamelCaseName", true}
, {"NotCamelCaseName", "NotCamelCaseName", false}
, {"CONSTANT_TO_CAMEL_CASE", "constantToCamelCase", true}
, {"CONSTANT_TO_CAMEL_CASE", "ConstantToCamelCase", false}
, {"Text To Camel Case", "textToCamelCase", true}
, {"Text To Camel Case", "TextToCamelCase", false}
, {"Text to camel case", "textToCamelCase", true}
, {"Text to camel case", "TextToCamelCase", false}
, {"ОтЖиМаЕмСя На ШиФфТе, ДрУзЯфФкИ!:)", "отЖиМаЕмСяНаШиФфТеДрУзЯфФкИ", true}
, {"ОтЖиМаЕмСя На ШиФфТе, ДрУзЯфФкИ!:)", "ОтЖиМаЕмСяНаШиФфТеДрУзЯфФкИ", false}
, {"-(*&*&%&%$^&^*()Знаков*&^%*(&$препинания… и.нечитаемых-----------знаков^ (Может*90Быть&(*?*?: СКОЛЬКО*?%?:%угодно!", "знаковПрепинанияИНечитаемыхЗнаковМожет90БытьСколькоУгодно", true}
, {"-(*&*&%&%$^&^*()Знаков*&^%*(&$препинания… и.нечитаемых-----------знаков^ (Может*90Быть&(*?*?: СКОЛЬКО*?%?:%угодно!", "ЗнаковПрепинанияИНечитаемыхЗнаковМожет90БытьСколькоУгодно", false}
, {"И, напоследок, русская строка со знаками препинания (локализация!).", "иНапоследокРусскаяСтрокаСоЗнакамиПрепинанияЛокализация", true}
, {"И, напоследок, русская строка со знаками препинания (локализация!).", "ИНапоследокРусскаяСтрокаСоЗнакамиПрепинанияЛокализация", false}
};
}
@Test(dataProvider = "data")
public void testString(final String s, final String expect, final boolean firstWordToLowerCase) throws Exception {
String s1 = s.replaceAll("[^A-Za-zа-яА-Я0-9]", "_");
s1 = s1.replaceAll("([a-zа-я])([A-ZА-Я])", "$1_$2");
s1 = s1.replaceAll("(\\d)", "$1_");
String actual = WordUtils.capitalizeFully(s1, '_').replaceAll("_","");
if (firstWordToLowerCase) {
actual = actual.substring(0, 1).toLowerCase() + actual.substring(1);
}
Assert.assertEquals(actual, expect);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment