package org.zwobble.hobgoblin.compiler.util; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; public class CasingTests { @Test public void lowerCamelCaseToUpperCamelCase() { var result = Casing.lowerCamelCaseToUpperCamelCase("abcDef"); assertThat(result, equalTo("AbcDef")); } @Test public void upperCamelCaseToLowerCamelCase() { var result = Casing.upperCamelCaseToLowerCamelCase("AbcDef"); assertThat(result, equalTo("abcDef")); } @ParameterizedTest @CsvSource({ "a,A", "abc,ABC", "abcDef,ABC_DEF", "abDeFg,AB_DE_FG", "a0,A_0", "a123,A_123", }) public void lowerCamelCaseToUpperCase(String lowerCamelCase, String expectedUpperCase) { var result = Casing.lowerCamelCaseToUpperCase(lowerCamelCase); assertThat(result, equalTo(expectedUpperCase)); } @ParameterizedTest @CsvSource({ "a,a", "abc,abc", "abcDef,abc_def", "abDeFg,ab_de_fg", "a0,a_0", "a123,a_123", }) public void lowerCamelCaseToSnakeCase(String lowerCamelCase, String expectedUpperCase) { var result = Casing.lowerCamelCaseToSnakeCase(lowerCamelCase); assertThat(result, equalTo(expectedUpperCase)); } @ParameterizedTest @CsvSource({ "A,a", "Abc,abc", "AbcDef,abc_def", "AbDeFg,ab_de_fg", "A0,a_0", "A123,a_123", }) public void upperCamelCaseToSnakeCase(String lowerCamelCase, String expectedUpperCase) { var result = Casing.upperCamelCaseToSnakeCase(lowerCamelCase); assertThat(result, equalTo(expectedUpperCase)); } }