blob: 1420fbd977b4a1361213a2baf54947afd8aa00b7 [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
package com.gemstone.gemfire.internal.lang;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
/**
* The StringUtilsJUnitTest is a test suite containing test cases for testing the contract and functionality of
* the StringUtils class.
* <p/>
* @author John Blum
* @see com.gemstone.gemfire.internal.lang.StringUtils
* @see org.junit.Assert
* @see org.junit.Test
* @since 7.0
*/
@SuppressWarnings("null")
@Category(UnitTest.class)
public class StringUtilsJUnitTest {
@Test
public void testConcat() {
assertEquals("", StringUtils.concat((Object[]) null));
assertEquals("", StringUtils.concat(""));
assertEquals(" ", StringUtils.concat(" "));
assertEquals(" ", StringUtils.concat(" "));
assertEquals("123", StringUtils.concat("123"));
assertEquals("1 2 3", StringUtils.concat("1 2 3"));
assertEquals(" 1 2 3 ", StringUtils.concat(" 1 2 3 "));
assertEquals("trueC13.14159test", StringUtils.concat(true, 'C', 1, 3.14159f, "test"));
assertEquals("test testing tested", StringUtils.concat("test", " testing", " tested"));
}
@Test
public void testConcatWithDelimiter() {
assertEquals("", StringUtils.concat(null, null));
assertEquals("", StringUtils.concat(null, " "));
assertEquals("", StringUtils.concat(new Object[] { "" }, " "));
assertEquals(" ", StringUtils.concat(new Object[] { " " }, " "));
assertEquals(" ", StringUtils.concat(new Object[] { " ", " ", " " }, " "));
assertEquals(" | | ", StringUtils.concat(new Object[] { " ", " ", " " }, "|"));
assertEquals("abc", StringUtils.concat(new Object[] { "a", "b", "c" }, null));
assertEquals("abc", StringUtils.concat(new Object[] { "a", "b", "c" }, ""));
assertEquals("a b c", StringUtils.concat(new Object[] { "a", "b", "c" }, " "));
assertEquals("a b c", StringUtils.concat(new Object[] { "a", "b", "c" }, " "));
assertEquals("a_b_c", StringUtils.concat(new Object[] { "a", "b", "c" }, "_"));
assertEquals("a|b|c", StringUtils.concat(new Object[] { "a", "b", "c" }, "|"));
assertEquals("a>b>c", StringUtils.concat(new Object[] { "a", "b", "c" }, ">"));
assertEquals("a&b&c", StringUtils.concat(new Object[] { "a", "b", "c" }, "&"));
assertEquals("*", StringUtils.concat(new Object[] { "*" }, "*"));
assertEquals("***", StringUtils.concat(new Object[] { "*", "*" }, "*"));
assertEquals("*-*", StringUtils.concat(new Object[] { "*", "*" }, "-"));
}
@Test
public void testDefaultIfBlank() {
assertNull(StringUtils.defaultIfBlank((String[]) null));
assertNull(null, StringUtils.defaultIfBlank(null, ""));
assertNull(null, StringUtils.defaultIfBlank(null, "", " "));
assertNull(null, StringUtils.defaultIfBlank(null, "", " ", "\0"));
assertEquals("test", StringUtils.defaultIfBlank("test", null, "", " "));
assertEquals("test", StringUtils.defaultIfBlank(null, "", " ", "test"));
assertEquals("test", StringUtils.defaultIfBlank(null, "", "test", " ", null));
assertEquals("_", StringUtils.defaultIfBlank("_", null, "", " "));
assertEquals("empty", StringUtils.defaultIfBlank(null, "", "empty", " "));
assertEquals("blank", StringUtils.defaultIfBlank(null, "", " ", "blank"));
assertEquals("null", StringUtils.defaultIfBlank("null", null, "", " "));
assertEquals("null", StringUtils.defaultIfBlank("null", "empty", "blank"));
}
@Test
public void testGetDigitsOnly() {
assertEquals("", StringUtils.getDigitsOnly(null));
assertEquals("", StringUtils.getDigitsOnly(""));
assertEquals("", StringUtils.getDigitsOnly(" "));
assertEquals("", StringUtils.getDigitsOnly("abc"));
assertEquals("", StringUtils.getDigitsOnly("abcOneTwoThree"));
assertEquals("", StringUtils.getDigitsOnly("@$$!"));
assertEquals("", StringUtils.getDigitsOnly("lOlOl"));
assertEquals("111", StringUtils.getDigitsOnly("1O1O1"));
assertEquals("7", StringUtils.getDigitsOnly("OO7"));
assertEquals("007", StringUtils.getDigitsOnly("007"));
assertEquals("123456789", StringUtils.getDigitsOnly("123,456.789"));
}
@Test
public void testGetLettersOnly() {
assertEquals("", StringUtils.getLettersOnly(null));
assertEquals("", StringUtils.getLettersOnly(""));
assertEquals("", StringUtils.getLettersOnly(" "));
assertEquals("", StringUtils.getLettersOnly("123"));
assertEquals("", StringUtils.getLettersOnly("123@$$!"));
assertEquals("", StringUtils.getLettersOnly("!@$$%#*?"));
assertEquals("", StringUtils.getLettersOnly("10101"));
assertEquals("lll", StringUtils.getLettersOnly("l0l0l"));
assertEquals("", StringUtils.getLettersOnly("007"));
assertEquals("OO", StringUtils.getLettersOnly("OO7"));
assertEquals("OOSeven", StringUtils.getLettersOnly("OOSeven"));
}
@Test
public void testGetSpaces() {
assertEquals("", StringUtils.getSpaces(0));
assertEquals(" ", StringUtils.getSpaces(1));
assertEquals(" ", StringUtils.getSpaces(2));
assertEquals(" ", StringUtils.getSpaces(3));
assertEquals(" ", StringUtils.getSpaces(4));
assertEquals(" ", StringUtils.getSpaces(5));
assertEquals(" ", StringUtils.getSpaces(6));
assertEquals(" ", StringUtils.getSpaces(7));
assertEquals(" ", StringUtils.getSpaces(8));
assertEquals(" ", StringUtils.getSpaces(9));
assertEquals(" ", StringUtils.getSpaces(10));
assertEquals(" ", StringUtils.getSpaces(11));
assertEquals(" ", StringUtils.getSpaces(12));
assertEquals(" ", StringUtils.getSpaces(13));
assertEquals(" ", StringUtils.getSpaces(14));
assertEquals(" ", StringUtils.getSpaces(15));
assertEquals(" ", StringUtils.getSpaces(16));
assertEquals(" ", StringUtils.getSpaces(17));
assertEquals(" ", StringUtils.getSpaces(18));
assertEquals(" ", StringUtils.getSpaces(19));
assertEquals(" ", StringUtils.getSpaces(20));
assertEquals(" ", StringUtils.getSpaces(21));
}
@Test
public void testIsBlank() {
assertTrue(StringUtils.isBlank(null));
assertTrue(StringUtils.isBlank(""));
assertTrue(StringUtils.isBlank("\0"));
assertTrue(StringUtils.isBlank(" "));
assertTrue(StringUtils.isBlank(" "));
}
@Test
public void testIsNotBlank() {
assertFalse(StringUtils.isBlank("test"));
assertFalse(StringUtils.isBlank("null"));
assertFalse(StringUtils.isBlank("empty"));
assertFalse(StringUtils.isBlank("_"));
assertFalse(StringUtils.isBlank("____"));
}
@Test
public void testIsEmpty() {
assertTrue(StringUtils.isEmpty(""));
}
@Test
public void testIsNotEmpty() {
assertFalse(StringUtils.isEmpty("test"));
assertFalse(StringUtils.isEmpty("null"));
assertFalse(StringUtils.isEmpty("empty"));
assertFalse(StringUtils.isEmpty(null));
assertFalse(StringUtils.isEmpty(" "));
assertFalse(StringUtils.isEmpty(" "));
assertFalse(StringUtils.isEmpty("_"));
assertFalse(StringUtils.isEmpty("___"));
}
@Test
public void testPadEnding() {
assertEquals("", StringUtils.padEnding("", 'X', 0));
assertEquals(" ", StringUtils.padEnding(" ", 'X', 0));
assertEquals(" ", StringUtils.padEnding(" ", 'X', 1));
assertEquals(" ", StringUtils.padEnding(" ", 'X', 0));
assertEquals(" ", StringUtils.padEnding(" ", 'X', 3));
assertEquals("X", StringUtils.padEnding("", 'X', 1));
assertEquals(" X", StringUtils.padEnding(" ", 'X', 2));
assertEquals(" XX", StringUtils.padEnding(" ", 'X', 4));
assertEquals("test", StringUtils.padEnding("test", 'X', 0));
assertEquals("test", StringUtils.padEnding("test", 'X', 4));
assertEquals("testX", StringUtils.padEnding("test", 'X', 5));
assertEquals("testXXX", StringUtils.padEnding("test", 'X', 7));
}
@Test(expected = NullPointerException.class)
public void testPadEndingWithNull() {
try {
StringUtils.padEnding(null, 'X', 10);
}
catch (NullPointerException expected) {
assertEquals("The String value to pad cannot be null!", expected.getMessage());
throw expected;
}
}
@Test
public void testToLowerCase() {
assertNull(StringUtils.toLowerCase(null));
assertEquals("null", StringUtils.toLowerCase("null"));
assertEquals("null", StringUtils.toLowerCase("NULL"));
assertEquals("", StringUtils.toLowerCase(""));
assertEquals(" ", StringUtils.toLowerCase(" "));
assertEquals("test", StringUtils.toLowerCase("TEST"));
assertEquals("1", StringUtils.toLowerCase("1"));
assertEquals("!", StringUtils.toLowerCase("!"));
assertEquals("$00", StringUtils.toLowerCase("$00"));
assertEquals("jon doe", StringUtils.toLowerCase("Jon Doe"));
}
@Test
public void testToUpperCase() {
assertNull(StringUtils.toUpperCase(null));
assertEquals("NULL", StringUtils.toUpperCase("NULL"));
assertEquals("NULL", StringUtils.toUpperCase("null"));
assertEquals("", StringUtils.toUpperCase(""));
assertEquals(" ", StringUtils.toUpperCase(" "));
assertEquals("TEST", StringUtils.toUpperCase("test"));
assertEquals("2", StringUtils.toUpperCase("2"));
assertEquals("!", StringUtils.toUpperCase("!"));
assertEquals("$00", StringUtils.toUpperCase("$00"));
assertEquals("JON DOE", StringUtils.toUpperCase("Jon Doe"));
}
@Test
public void testTrim() {
assertNull(StringUtils.trim(null));
assertEquals("", StringUtils.trim(""));
assertEquals("", StringUtils.trim(" "));
assertEquals("", StringUtils.trim(" "));
assertEquals("null", StringUtils.trim("null"));
assertEquals("test", StringUtils.trim(" test"));
assertEquals("test", StringUtils.trim("test "));
assertEquals("test", StringUtils.trim(" test "));
assertEquals("a b c d", StringUtils.trim(" a b c d "));
}
@Test
public void testTruncate() {
assertEquals("", StringUtils.truncate("", 0));
assertEquals("", StringUtils.truncate("", 1));
assertEquals(" ", StringUtils.truncate(" ", 1));
assertEquals(" ", StringUtils.truncate(" ", 5));
assertEquals(" ", StringUtils.truncate(" ", 1));
assertEquals("XX", StringUtils.truncate("XXX", 2));
assertEquals("XX", StringUtils.truncate("XX", 4));
}
@Test(expected = IllegalArgumentException.class)
public void testTruncateWithNegativeLength() {
try {
StringUtils.truncate("XX", -1);
}
catch (IllegalArgumentException expected) {
assertEquals("Length must be greater than equal to 0!", expected.getMessage());
throw expected;
}
}
@Test
public void testValueOf() {
assertEquals("null", StringUtils.valueOf(null));
assertEquals("null", StringUtils.valueOf(null, (String[]) null));
assertEquals("null", StringUtils.valueOf(null, new String[] { }));
assertEquals("test", StringUtils.valueOf(null, "test"));
assertEquals("nil", StringUtils.valueOf(null, "nil", "test"));
assertEquals("test", StringUtils.valueOf("test", (String[]) null));
assertEquals("null", StringUtils.valueOf("null", "test"));
assertEquals("nil", StringUtils.valueOf("nil", "mock", "test"));
assertEquals("", StringUtils.valueOf("", "test", "mock", "null"));
assertEquals(" ", StringUtils.valueOf(" ", "test", "mock", "nil"));
assertEquals("true", StringUtils.valueOf(true, "test", "nil", null));
assertEquals("1", StringUtils.valueOf(1, "one"));
assertEquals(String.valueOf(Math.PI), StringUtils.valueOf(Math.PI, "314159"));
}
@Test
public void testWrap() {
final String line = "The line of text to split for testing purposes!";
final String expectedLine = "The line of".concat(StringUtils.LINE_SEPARATOR)
.concat("text to split").concat(StringUtils.LINE_SEPARATOR)
.concat("for testing").concat(StringUtils.LINE_SEPARATOR)
.concat("purposes!");
final String actualLine = StringUtils.wrap(line, 15, null);
assertNotNull(actualLine);
assertEquals(expectedLine, actualLine);
}
@Test
public void testWrapWithIndent() {
final String line = "The line of text to split for testing purposes!";
final String expectedLine = "The line of".concat(StringUtils.LINE_SEPARATOR)
.concat("\t").concat("text to split").concat(StringUtils.LINE_SEPARATOR)
.concat("\t").concat("for testing").concat(StringUtils.LINE_SEPARATOR)
.concat("\t").concat("purposes!");
final String actualLine = StringUtils.wrap(line, 15, "\t");
assertNotNull(actualLine);
assertEquals(expectedLine, actualLine);
}
}