package org.texai.util;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import org.apache.log4j.Logger;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Test;
/**
*
* @author reed
*/
public class StringUtilsTest {
/** the logger */
private static final Logger LOGGER = Logger.getLogger(StringUtilsTest.class);
public StringUtilsTest() {
}
/**
* Test of floatArrayToString method, of class StringUtils.
*/
@Test
public void testFloatArrayToString() {
LOGGER.info("floatArrayToString");
float[] floatArray = {1.0f, 2.0f, 3.1f};
assertEquals("[1.0, 2.0, 3.1]", StringUtils.floatArrayToString(floatArray));
float[] floatArray2 = {};
assertEquals("[]", StringUtils.floatArrayToString(floatArray2));
}
/**
* Test of reverseCommaDelimitedString method, of class StringUtils.
*/
@Test
public void testReverseCommaDelimitedString() {
LOGGER.info("reverseCommaDelimitedString");
String result = StringUtils.reverseCommaDelimitedString("a, b, c");
assertEquals(result, "c, b, a");
result = StringUtils.reverseCommaDelimitedString("UID=2847e3a8-c270-4848-a947-aeea5aa2f8b8, DC=IntermediateCertificate, CN=texai.org");
assertEquals(result, "CN=texai.org, DC=IntermediateCertificate, UID=2847e3a8-c270-4848-a947-aeea5aa2f8b8");
}
/**
* Test of toSortedStrings method, of class StringUtils.
*/
@Test
public void testToSortedStrings() {
LOGGER.info("toSortedStrings");
final Collection<Object> objects = new HashSet<>();
objects.add("1");
objects.add("2");
objects.add(3);
objects.add(4);
objects.add('5');
objects.add(new ArrayList<>());
assertEquals("[1, 2, 3, 4, 5, []]", StringUtils.toSortedStrings(objects).toString());
objects.clear();
assertEquals("[]", StringUtils.toSortedStrings(objects).toString());
}
/**
* Test of booleanArrayToBitString method, of class StringUtils.
*/
@Test
public void testBooleanArrayToBitString() {
LOGGER.info("booleanArrayToBitString");
boolean[] booleanArray = {true};
assertEquals("1", StringUtils.booleanArrayToBitString(booleanArray));
boolean[] booleanArray2 = {false, true};
assertEquals("01", StringUtils.booleanArrayToBitString(booleanArray2));
boolean[] booleanArray3 = {true, false};
assertEquals("10", StringUtils.booleanArrayToBitString(booleanArray3));
}
/**
* Test of htmlUnescape method, of class StringUtils.
*/
@Test
public void testHtmlUnescape() {
LOGGER.info("htmlUnescape");
assertEquals("abc", StringUtils.htmlUnescape("abc"));
assertEquals("a b c", StringUtils.htmlUnescape("a b c"));
assertEquals("Communicator> hello Stephen", StringUtils.htmlUnescape("Communicator> hello Stephen"));
}
/**
* Test of isJavaClassName method, of class StringUtils.
*/
@Test
public void testIsJavaClassName() {
LOGGER.info("isJavaClassName");
assertFalse(StringUtils.isJavaClassName(null));
assertFalse(StringUtils.isJavaClassName(""));
assertFalse(StringUtils.isJavaClassName(".abc"));
assertFalse(StringUtils.isJavaClassName("org. texai.Abc"));
assertFalse(StringUtils.isJavaClassName("org..texai.Abc"));
assertFalse(StringUtils.isJavaClassName("org.texai.Abc "));
assertTrue(StringUtils.isJavaClassName("org.texai.Abc"));
}
/**
* Test of isNonEmptyString method, of class StringUtils.
*/
@Test
public void testIsNonEmptyString() {
LOGGER.info("isNonEmptyString");
assertFalse(StringUtils.isNonEmptyString(null));
assertFalse(StringUtils.isNonEmptyString(""));
assertTrue(StringUtils.isNonEmptyString("abc"));
}
/**
* Test of splitOnSpace method, of class StringUtils.
*/
@Test
public void testSplitOnSpace() {
LOGGER.info("splitOnSpace");
assertEquals("[abc]", StringUtils.splitOnSpace("abc").toString());
assertEquals("a", StringUtils.splitOnSpace("a b c").get(0));
assertEquals("b", StringUtils.splitOnSpace("a b c").get(1));
assertEquals("c", StringUtils.splitOnSpace("a b c").get(2));
assertEquals("[a, b, c]", StringUtils.splitOnSpace("a b c").toString());
assertEquals(3, StringUtils.splitOnSpace(" a b c ").size());
assertEquals("[a, b, c]", StringUtils.splitOnSpace(" a b c ").toString());
assertEquals("[abc, def]", StringUtils.splitOnSpace("abc def").toString());
}
/**
* Test of splitHTMLTags method, of class StringUtils.
*/
@Test
public void testSplitHTMLTags() {
LOGGER.info("splitHTMLTags");
assertEquals("[abc]", StringUtils.splitHTMLTags("abc").toString());
assertEquals("a", StringUtils.splitHTMLTags("a b c").get(0));
assertEquals("b", StringUtils.splitHTMLTags("a b c").get(1));
assertEquals("c", StringUtils.splitHTMLTags("a b c").get(2));
assertEquals("[a, b, c]", StringUtils.splitHTMLTags("a b c").toString());
assertEquals(3, StringUtils.splitHTMLTags(" a b c ").size());
assertEquals("[a, b, c]", StringUtils.splitHTMLTags(" a b c ").toString());
assertEquals("[abc, def]", StringUtils.splitHTMLTags("abc def").toString());
assertEquals("[abc, <br>]", StringUtils.splitHTMLTags("abc<br>").toString());
assertEquals("[ab, <br>, c]", StringUtils.splitHTMLTags("ab<br>c").toString());
assertEquals("[<br>, ab, <br>, c]", StringUtils.splitHTMLTags("<br>ab<br>c").toString());
assertEquals("[<li>, abc, </li>]", StringUtils.splitHTMLTags("<li>abc</li>").toString());
}
/**
* Test of logStringCharacterDifferences method, of class StringUtils.
*/
@Test
public void testLogStringCharacterDifferences() {
LOGGER.info("logStringCharacterDifferences");
StringUtils.logStringCharacterDifferences("abc", "abc");
StringUtils.logStringCharacterDifferences("abc", "adc");
try {
StringUtils.logStringCharacterDifferences("abc ", "abc");
assert false : "failed";
} catch (AssertionError ex) {
LOGGER.info("caught expected: " + ex.getMessage());
}
}
/**
* Test of escapeSingleQuotes method, of class StringUtils.
*/
@Test
public void testEscapeSingleQuotes() {
LOGGER.info("escapeSingleQuotes");
String string = "abc\"def'ghi";
String result = StringUtils.escapeSingleQuotes(string);
assertEquals("abc\"def\\'ghi", result);
}
/**
* Test of getStackTraceAsString method, of class StringUtils.
*/
@Test
public void testGetStackTraceAsString() {
LOGGER.info("getStackTraceAsString");
try {
throw new TexaiException("test");
} catch (final TexaiException ex) {
String result = StringUtils.getStackTraceAsString(ex);
assertTrue(result.startsWith("org.texai.util.TexaiException: test"));
}
}
/**
* Test of removeEnclosingDoubleQuotes method, of class StringUtils.
*/
@Test
public void testRemoveEnclosingDoubleQuotes() {
LOGGER.info("removeEnclosingDoubleQuotes");
String string = "abc";
String result = StringUtils.removeEnclosingDoubleQuotes(string);
assertEquals("abc", result);
string = "ab\"c";
result = StringUtils.removeEnclosingDoubleQuotes(string);
assertEquals("ab\"c", result);
string = "\"abc";
result = StringUtils.removeEnclosingDoubleQuotes(string);
assertEquals("abc", result);
string = "abc\"";
result = StringUtils.removeEnclosingDoubleQuotes(string);
assertEquals("abc", result);
string = "\"abc\"";
result = StringUtils.removeEnclosingDoubleQuotes(string);
assertEquals("abc", result);
}
/**
* Test of convertInputStreamToString method, of class StringUtils.
*/
@Test
public void testConvertInputStreamToString() {
LOGGER.info("convertInputStreamToString");
final String string = "abcd\n1234";
InputStream inputStream = null;
try {
inputStream = new ByteArrayInputStream(string.getBytes("UTF-8"));
} catch (UnsupportedEncodingException ex) {
fail(ex.getMessage());
}
assertNotNull(inputStream);
final String result = StringUtils.convertInputStreamToString(inputStream);
assertEquals(string, result);
}
/**
* Test of indentSpaces method, of class StringUtils.
*/
@Test
public void testindentSpaces() {
LOGGER.info("indentSpaces");
final StringBuilder stringBuilder = new StringBuilder();
assertEquals("", stringBuilder.toString());
StringUtils.indentSpaces(stringBuilder, 0);
assertEquals("", stringBuilder.toString());
StringUtils.indentSpaces(stringBuilder, 10);
assertEquals(" ", stringBuilder.toString());
stringBuilder.append('a');
StringUtils.indentSpaces(stringBuilder, 5);
assertEquals(" a ", stringBuilder.toString());
}
/**
* Test of makeBlankString method, of class StringUtils.
*/
@Test
public void testMakeBlankString() {
LOGGER.info("makeBlankString");
assertEquals("", StringUtils.makeBlankString(0));
assertEquals(" ", StringUtils.makeBlankString(1));
assertEquals(" ", StringUtils.makeBlankString(2));
assertEquals(" ", StringUtils.makeBlankString(3));
assertEquals(" ", StringUtils.makeBlankString(4));
assertEquals(" ", StringUtils.makeBlankString(5));
assertEquals(" ", StringUtils.makeBlankString(6));
}
/**
* Test of getLowerCasePredicateName method, of class StringUtils.
*/
@Test
public void testGetLowerCasePredicateName() {
LOGGER.info("getLowerCasePredicateName");
assertEquals("a", StringUtils.getLowerCasePredicateName("A"));
assertEquals("ab", StringUtils.getLowerCasePredicateName("AB"));
assertEquals("abc", StringUtils.getLowerCasePredicateName("ABC"));
assertEquals("abcd", StringUtils.getLowerCasePredicateName("ABCD"));
assertEquals("ab", StringUtils.getLowerCasePredicateName("Ab"));
assertEquals("abc", StringUtils.getLowerCasePredicateName("Abc"));
assertEquals("abcd", StringUtils.getLowerCasePredicateName("Abcd"));
assertEquals("aBc", StringUtils.getLowerCasePredicateName("ABc"));
assertEquals("aBcd", StringUtils.getLowerCasePredicateName("ABcd"));
assertEquals("abC", StringUtils.getLowerCasePredicateName("AbC"));
assertEquals("abCd", StringUtils.getLowerCasePredicateName("AbCd"));
assertEquals("rdfTestEntity", StringUtils.getLowerCasePredicateName("RDFTestEntity"));
assertEquals("string", StringUtils.getLowerCasePredicateName("String"));
}
/**
* Test of hasLength method, of class StringUtils.
*/
@Test
public void testHasLength() {
LOGGER.info("hasLength");
assertTrue(StringUtils.hasLength("abc"));
assertFalse(StringUtils.hasLength(""));
assertFalse(StringUtils.hasLength((String) null));
}
/**
* Test of replace method, of class StringUtils.
*/
@Test
public void testReplace() {
LOGGER.info("replace");
assertEquals("zycdef", StringUtils.replace("abcdef", "ab", "zy"));
}
/**
* Test of toHex method, of class StringUtils.
*/
@Test
public void testToHex() {
System.out.println("toHex");
byte[] buffer = "".getBytes();
assertEquals("", StringUtils.toHex(buffer));
buffer = "0".getBytes();
assertEquals("30", StringUtils.toHex(buffer));
buffer = "0123".getBytes();
assertEquals("30313233", StringUtils.toHex(buffer));
assertEquals("303132", StringUtils.toHex(buffer, 3));
}
/**
* Test of capitalize method, of class StringUtils.
*/
@Test
public void testCapitalize() {
LOGGER.info("capitalize");
assertEquals("30313233", StringUtils.capitalize("30313233"));
assertEquals("Abc", StringUtils.capitalize("abc"));
assertEquals("Abc", StringUtils.capitalize("Abc"));
}
/**
* Test of uncapitalize method, of class StringUtils.
*/
@Test
public void testUncapitalize() {
LOGGER.info("uncapitalize");
assertEquals("30313233", StringUtils.uncapitalize("30313233"));
assertEquals("abc", StringUtils.uncapitalize("Abc"));
assertEquals("aBC", StringUtils.uncapitalize("ABC"));
}
/**
* Test of packageFromClassName method, of class StringUtils.
*/
@Test
public void testPackageFromClassName() {
LOGGER.info("packageFromClassName");
assertEquals("java.lang", StringUtils.packageFromClassName(String.class.getName()));
}
/**
* Test of simpleClassName method, of class StringUtils.
*/
@Test
public void testSimpleClassName() {
LOGGER.info("simpleClassName");
assertEquals("String", StringUtils.simpleClassName(String.class.getName()));
}
/**
* Test of countOccurrencesOf method, of class StringUtils.
*/
@Test
public void testCountOccurrencesOf() {
LOGGER.info("countOccurrencesOf");
assertEquals(0, StringUtils.countOccurrencesOf("", ""));
assertEquals(1, StringUtils.countOccurrencesOf("a", "a"));
assertEquals(2, StringUtils.countOccurrencesOf("aa", "a"));
assertEquals(0, StringUtils.countOccurrencesOf("a", "aa"));
assertEquals(3, StringUtils.countOccurrencesOf("\nabc\ndef\n", "\n"));
}
/**
* Test of ensureTwoNewLines method, of class StringUtils.
*/
@Test
public void testEnsureTwoNewLines() {
LOGGER.info("ensureTwoNewLines");
final StringBuilder stringBuilder = new StringBuilder();
StringUtils.ensureTwoNewLines(stringBuilder);
assertEquals("\n\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc");
StringUtils.ensureTwoNewLines(stringBuilder);
assertEquals("abc\n\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("ab\nc");
StringUtils.ensureTwoNewLines(stringBuilder);
assertEquals("ab\nc\n\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc\n");
StringUtils.ensureTwoNewLines(stringBuilder);
assertEquals("abc\n\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc\n\n");
StringUtils.ensureTwoNewLines(stringBuilder);
assertEquals("abc\n\n", stringBuilder.toString());
}
/**
* Test of ensureOneNewLine method, of class StringUtils.
*/
@Test
public void testEnsureOneNewLine() {
LOGGER.info("ensureOneNewLine");
final StringBuilder stringBuilder = new StringBuilder();
StringUtils.ensureOneNewLine(stringBuilder);
assertEquals("\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc");
StringUtils.ensureOneNewLine(stringBuilder);
assertEquals("abc\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("ab\nc");
StringUtils.ensureOneNewLine(stringBuilder);
assertEquals("ab\nc\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc\n");
StringUtils.ensureOneNewLine(stringBuilder);
assertEquals("abc\n", stringBuilder.toString());
stringBuilder.setLength(0);
stringBuilder.append("abc\n\n");
StringUtils.ensureOneNewLine(stringBuilder);
assertEquals("abc\n\n", stringBuilder.toString());
}
/**
* Test of toSingleString method, of class StringUtils.
*/
@Test
public void testToSingleString() {
LOGGER.info("toSingleString");
final List<String> strings = new ArrayList<>();
assertEquals("", StringUtils.toSingleString(strings));
strings.add("a");
assertEquals("a", StringUtils.toSingleString(strings));
strings.clear();
strings.add("a");
strings.add("b");
assertEquals("a b", StringUtils.toSingleString(strings));
strings.clear();
strings.add("a");
strings.add("b");
strings.add("c");
assertEquals("a b c", StringUtils.toSingleString(strings));
strings.clear();
strings.add("a ");
strings.add("b ");
strings.add("c ");
assertEquals("a b c ", StringUtils.toSingleString(strings));
}
/**
* Test of padWithTrailingSpaces method, of class StringUtils.
*/
@Test
public void testPadWithTrailingSpaces() {
LOGGER.info("padWithTrailingSpaces");
assertEquals("", StringUtils.padWithTrailingSpaces("", 0));
assertEquals("a", StringUtils.padWithTrailingSpaces("a", 0));
assertEquals("a", StringUtils.padWithTrailingSpaces("a", 1));
assertEquals("a ", StringUtils.padWithTrailingSpaces("a", 2));
assertEquals("abc", StringUtils.padWithTrailingSpaces("abc", 3));
assertEquals("abc ", StringUtils.padWithTrailingSpaces("abc", 6));
assertEquals(" abc ", StringUtils.padWithTrailingSpaces(" abc", 8));
}
/**
* Test of stripNumericSuffix method, of class StringUtils.
*/
@Test
public void testStripNumericSuffix() {
LOGGER.info("stripNumericSuffix");
assertEquals("", StringUtils.stripNumericSuffix(""));
assertEquals("abc", StringUtils.stripNumericSuffix("abc"));
assertEquals("ab1c", StringUtils.stripNumericSuffix("ab1c"));
assertEquals("", StringUtils.stripNumericSuffix("1"));
assertEquals("", StringUtils.stripNumericSuffix("12"));
assertEquals("", StringUtils.stripNumericSuffix("123"));
assertEquals("abc", StringUtils.stripNumericSuffix("abc1"));
assertEquals("abc", StringUtils.stripNumericSuffix("abc12"));
assertEquals("abc", StringUtils.stripNumericSuffix("abc123"));
}
/**
* Test of htmlEscape method, of class StringUtils.
*/
@Test
public void testHtmlEscape() {
LOGGER.info("htmlEscape");
assertNull("", StringUtils.htmlEscape(null));
assertEquals("", StringUtils.htmlEscape(""));
assertEquals("abc", StringUtils.htmlEscape("abc"));
assertEquals("<br>", StringUtils.htmlEscape("\n"));
assertEquals(" ", StringUtils.htmlEscape(" "));
assertEquals("<tag>", StringUtils.htmlEscape("<tag>"));
assertEquals("&", StringUtils.htmlEscape("&"));
}
/**
* Test of stripPunctuationAndDigits method, of class StringUtils.
*/
@Test
public void testStripPunctuationAndDigits() {
LOGGER.info("stripPunctuationAndDigits");
assertEquals(" ", StringUtils.stripPunctuationAndDigits(" "));
assertEquals("abc def", StringUtils.stripPunctuationAndDigits("abc def"));
assertEquals("abc def", StringUtils.stripPunctuationAndDigits("abc-def"));
assertEquals("abc", StringUtils.stripPunctuationAndDigits("abc"));
assertEquals("", StringUtils.stripPunctuationAndDigits("123"));
assertEquals("abc def ghi", StringUtils.stripPunctuationAndDigits("abc, def, ghi."));
assertEquals("abc def ghi", StringUtils.stripPunctuationAndDigits("abc, (def), [ghi]."));
}
/**
* Test of isOrderConsistent method, of class StringUtils.
*/
@Test
public void testIsOrderConsistent() {
LOGGER.info("isOrderConsistent");
final List<String> strings1 = new ArrayList<>();
final List<String> strings2 = new ArrayList<>();
assertTrue(StringUtils.isOrderConsistent(strings1, strings2));
strings1.add("a");
assertFalse(StringUtils.isOrderConsistent(strings1, strings2));
strings2.add("a");
assertTrue(StringUtils.isOrderConsistent(strings1, strings2));
strings1.add("b");
// [a, b] vs [a]
assertFalse(StringUtils.isOrderConsistent(strings1, strings2));
strings2.add("c");
// [a, b] vs [a, c]
assertFalse(StringUtils.isOrderConsistent(strings1, strings2));
strings1.add("c");
// [a, b, c] vs [a, c]
assertTrue(StringUtils.isOrderConsistent(strings1, strings2));
strings1.add("d");
strings2.add("d");
// [a, b, c, d] vs [a, c, d]
assertTrue(StringUtils.isOrderConsistent(strings1, strings2));
strings1.add("e");
strings2.add("f");
// [a, b, c, d, e] vs [a, c, d, f]
assertFalse(StringUtils.isOrderConsistent(strings1, strings2));
strings1.clear();
strings1.add("The");
strings1.add("first");
strings1.add("cat");
strings1.add("on");
strings1.add("the");
strings1.add("book");
strings2.clear();
strings2.add("the");
strings2.add("first");
strings2.add("cat");
strings2.add("on");
strings2.add("the");
strings2.add("book");
assertTrue(StringUtils.isOrderConsistent(strings1, strings2));
strings2.clear();
strings2.add("the");
strings2.add("first");
strings2.add("book");
strings2.add("on");
strings2.add("the");
strings2.add("cat");
assertFalse(StringUtils.isOrderConsistent(strings1, strings2));
}
}