Parameterize tests to validate supplementary character input.

This commit is contained in:
Gary Gregory 2021-11-20 10:22:40 -05:00
parent 1f06eb4dce
commit dc146cae66
1 changed files with 50 additions and 32 deletions

View File

@ -46,6 +46,8 @@ import org.apache.commons.lang3.mutable.MutableInt;
import org.apache.commons.lang3.text.WordUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
/**
* Unit tests for methods of {@link org.apache.commons.lang3.StringUtils}
@ -63,7 +65,7 @@ public class StringUtilsTest {
static {
final StringBuilder ws = new StringBuilder();
final StringBuilder nws = new StringBuilder();
final String hs = String.valueOf(((char) 160));
final String hs = String.valueOf((char) 160);
final StringBuilder tr = new StringBuilder();
final StringBuilder ntr = new StringBuilder();
for (int i = 0; i < Character.MAX_VALUE; i++) {
@ -1229,7 +1231,7 @@ public class StringUtilsTest {
}
@Test
public void testJoin_ArrayString() {
public void testJoin_ArrayString_EmptyDelimiter() {
assertNull(StringUtils.join((Object[]) null, null));
assertEquals(TEXT_LIST_NOSEP, StringUtils.join(ARRAY_LIST, null));
assertEquals(TEXT_LIST_NOSEP, StringUtils.join(ARRAY_LIST, ""));
@ -1238,18 +1240,24 @@ public class StringUtilsTest {
assertEquals("", StringUtils.join(EMPTY_ARRAY_LIST, null));
assertEquals("", StringUtils.join(EMPTY_ARRAY_LIST, ""));
assertEquals("", StringUtils.join(EMPTY_ARRAY_LIST, SEPARATOR));
assertEquals(TEXT_LIST, StringUtils.join(ARRAY_LIST, SEPARATOR));
assertEquals(",,foo", StringUtils.join(MIXED_ARRAY_LIST, SEPARATOR));
assertEquals("foo,2", StringUtils.join(MIXED_TYPE_LIST, SEPARATOR));
assertEquals("/", StringUtils.join(MIXED_ARRAY_LIST, "/", 0, MIXED_ARRAY_LIST.length - 1));
assertEquals("", StringUtils.join(MIXED_ARRAY_LIST, "", 0, MIXED_ARRAY_LIST.length - 1));
assertEquals("foo", StringUtils.join(MIXED_TYPE_LIST, "/", 0, 1));
assertEquals("foo/2", StringUtils.join(MIXED_TYPE_LIST, "/", 0, 2));
assertEquals("2", StringUtils.join(MIXED_TYPE_LIST, "/", 1, 2));
assertEquals("", StringUtils.join(MIXED_TYPE_LIST, "/", 2, 1));
}
@ParameterizedTest
@ValueSource(strings = {",", ";", Supplementary.CharU20000, Supplementary.CharU20001})
public void testJoin_ArrayString_NonEmptyDelimiter(final String delimiter) {
assertEquals("", StringUtils.join(EMPTY_ARRAY_LIST, delimiter));
assertEquals(String.join(delimiter, ARRAY_LIST), StringUtils.join(ARRAY_LIST, delimiter));
assertEquals(delimiter + delimiter + "foo", StringUtils.join(MIXED_ARRAY_LIST, delimiter));
assertEquals(String.join(delimiter, "foo", "2"), StringUtils.join(MIXED_TYPE_LIST, delimiter));
assertEquals(delimiter, StringUtils.join(MIXED_ARRAY_LIST, delimiter, 0, MIXED_ARRAY_LIST.length - 1));
assertEquals("foo", StringUtils.join(MIXED_TYPE_LIST, delimiter, 0, 1));
assertEquals(String.join(delimiter, "foo", "2"), StringUtils.join(MIXED_TYPE_LIST, delimiter, 0, 2));
assertEquals("2", StringUtils.join(MIXED_TYPE_LIST, delimiter, 1, 2));
assertEquals("", StringUtils.join(MIXED_TYPE_LIST, delimiter, 2, 1));
}
@Test
@ -1307,7 +1315,7 @@ public class StringUtilsTest {
}
@Test
public void testJoin_List() {
public void testJoin_List_EmptyDelimiter() {
assertNull(StringUtils.join((List<String>) null, null));
assertEquals(TEXT_LIST_NOSEP, StringUtils.join(STRING_LIST, null));
assertEquals(TEXT_LIST_NOSEP, StringUtils.join(STRING_LIST, ""));
@ -1316,20 +1324,12 @@ public class StringUtilsTest {
assertEquals("", StringUtils.join(EMPTY_STRING_LIST, null));
assertEquals("", StringUtils.join(EMPTY_STRING_LIST, ""));
assertEquals("", StringUtils.join(EMPTY_STRING_LIST, SEPARATOR));
assertEquals(TEXT_LIST, StringUtils.join(STRING_LIST, SEPARATOR));
assertEquals(",,foo", StringUtils.join(MIXED_STRING_LIST, SEPARATOR));
assertEquals("foo,2", StringUtils.join(MIXED_TYPE_OBJECT_LIST, SEPARATOR));
assertEquals("/", StringUtils.join(MIXED_STRING_LIST, "/", 0, MIXED_STRING_LIST.size() - 1));
assertEquals("", StringUtils.join(MIXED_STRING_LIST, "", 0, MIXED_STRING_LIST.size()- 1));
assertEquals("foo", StringUtils.join(MIXED_TYPE_OBJECT_LIST, "/", 0, 1));
assertEquals("foo/2", StringUtils.join(MIXED_TYPE_OBJECT_LIST, "/", 0, 2));
assertEquals("2", StringUtils.join(MIXED_TYPE_OBJECT_LIST, "/", 1, 2));
assertEquals("", StringUtils.join(MIXED_TYPE_OBJECT_LIST, "/", 2, 1));
assertNull(null, StringUtils.join((List<?>) null, "/", 0, 1));
}
@Test
public void testJoin_List_CharDelimiter() {
assertEquals("/", StringUtils.join(MIXED_STRING_LIST, '/', 0, MIXED_STRING_LIST.size() - 1));
assertEquals("foo", StringUtils.join(MIXED_TYPE_OBJECT_LIST, '/', 0, 1));
assertEquals("foo/2", StringUtils.join(MIXED_TYPE_OBJECT_LIST, '/', 0, 2));
@ -1338,6 +1338,23 @@ public class StringUtilsTest {
assertNull(null, StringUtils.join((List<?>) null, '/', 0, 1));
}
@ParameterizedTest
@ValueSource(strings = {",", ";", Supplementary.CharU20000, Supplementary.CharU20001})
public void testJoin_List_NonEmptyDelimiter(final String delimiter) {
assertEquals("", StringUtils.join(EMPTY_STRING_LIST, delimiter));
assertEquals(String.join(delimiter, STRING_LIST), StringUtils.join(STRING_LIST, delimiter));
assertEquals(delimiter + delimiter + "foo", StringUtils.join(MIXED_STRING_LIST, delimiter));
assertEquals(String.join(delimiter, "foo", "2"), StringUtils.join(MIXED_TYPE_OBJECT_LIST, delimiter));
assertEquals(delimiter, StringUtils.join(MIXED_STRING_LIST, delimiter, 0, MIXED_STRING_LIST.size() - 1));
assertEquals("foo", StringUtils.join(MIXED_TYPE_OBJECT_LIST, delimiter, 0, 1));
assertEquals(String.join(delimiter, "foo", "2"), StringUtils.join(MIXED_TYPE_OBJECT_LIST, delimiter, 0, 2));
assertEquals("2", StringUtils.join(MIXED_TYPE_OBJECT_LIST, delimiter, 1, 2));
assertEquals("", StringUtils.join(MIXED_TYPE_OBJECT_LIST, delimiter, 2, 1));
assertNull(null, StringUtils.join((List<?>) null, delimiter, 0, 1));
}
@Test
public void testJoin_Objectarray() {
// assertNull(StringUtils.join(null)); // generates warning
@ -1371,15 +1388,16 @@ public class StringUtilsTest {
assertNull(StringUtils.join((Object[]) null));
}
@Test
public void testJoinWith() {
assertEquals("", StringUtils.joinWith(",")); // empty array
assertEquals("", StringUtils.joinWith(",", (Object[]) NULL_ARRAY_LIST));
assertEquals("null", StringUtils.joinWith(",", NULL_TO_STRING_LIST)); //toString method prints 'null'
@ParameterizedTest
@ValueSource(strings = {",", ";", Supplementary.CharU20000, Supplementary.CharU20001})
public void testJoinWith(final String delimiter) {
assertEquals("", StringUtils.joinWith(delimiter)); // empty array
assertEquals("", StringUtils.joinWith(delimiter, (Object[]) NULL_ARRAY_LIST));
assertEquals("null", StringUtils.joinWith(delimiter, NULL_TO_STRING_LIST)); // toString method prints 'null'
assertEquals("a,b,c", StringUtils.joinWith(",", "a", "b", "c"));
assertEquals(",a,", StringUtils.joinWith(",", null, "a", ""));
assertEquals(",a,", StringUtils.joinWith(",", "", "a", ""));
assertEquals(String.join(delimiter, "a", "b", "c"), StringUtils.joinWith(delimiter, "a", "b", "c"));
assertEquals(String.join(delimiter, "", "a", ""), StringUtils.joinWith(delimiter, null, "a", ""));
assertEquals(String.join(delimiter, "", "a", ""), StringUtils.joinWith(delimiter, "", "a", ""));
assertEquals("ab", StringUtils.joinWith(null, "a", "b"));
}