diff options
Diffstat (limited to 'common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java')
-rw-r--r-- | common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java | 1850 |
1 files changed, 1850 insertions, 0 deletions
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java new file mode 100644 index 0000000000..137b55249a --- /dev/null +++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java @@ -0,0 +1,1850 @@ +/******************************************************************************* + * Copyright (c) 2005, 2010 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.common.utility.tests.internal; + +import java.io.StringWriter; +import java.io.Writer; +import junit.framework.TestCase; +import org.eclipse.jpt.common.utility.internal.StringTools; + +@SuppressWarnings("nls") +public class StringToolsTests extends TestCase { + + public StringToolsTests(String name) { + super(name); + } + + private static void assertEquals(String expected, char[] actual) { + assertEquals(expected, new String(actual)); + } + + // ********** padding/truncating ********** + + public void testPad() { + assertEquals("fred", StringTools.pad("fred", 4)); + assertEquals("fred ", StringTools.pad("fred", 6)); + boolean exThrown = false; + try { + assertEquals("fr", StringTools.pad("fred", 2)); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testPadCharArray() { + assertEquals("fred", StringTools.pad(new char[] { 'f', 'r', 'e', 'd' }, 4)); + assertEquals("fred ", StringTools.pad(new char[] { 'f', 'r', 'e', 'd' }, 6)); + boolean exThrown = false; + try { + assertEquals("fr", StringTools.pad(new char[] { 'f', 'r', 'e', 'd' }, 2)); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testPadOnWriter() { + Writer writer; + writer = new StringWriter(); + StringTools.padOn("fred", 4, writer); + assertEquals("fred", writer.toString()); + + writer = new StringWriter(); + StringTools.padOn("fred", 6, writer); + assertEquals("fred ", writer.toString()); + + writer = new StringWriter(); + boolean exThrown = false; + try { + StringTools.padOn("fred", 2, writer); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testPadOnStringBuffer() { + StringBuffer sb; + sb = new StringBuffer(); + StringTools.padOn("fred", 4, sb); + assertEquals("fred", sb.toString()); + + sb = new StringBuffer(); + StringTools.padOn("fred", 6, sb); + assertEquals("fred ", sb.toString()); + + sb = new StringBuffer(); + boolean exThrown = false; + try { + StringTools.padOn("fred", 2, sb); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testPadOnStringBuilder() { + StringBuilder sb; + sb = new StringBuilder(); + StringTools.padOn("fred", 4, sb); + assertEquals("fred", sb.toString()); + + sb = new StringBuilder(); + StringTools.padOn("fred", 6, sb); + assertEquals("fred ", sb.toString()); + + sb = new StringBuilder(); + boolean exThrown = false; + try { + StringTools.padOn("fred", 2, sb); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testPadOrTruncate() { + assertEquals("fred", StringTools.padOrTruncate("fred", 4)); + assertEquals("fred ", StringTools.padOrTruncate("fred", 6)); + assertEquals("fr", StringTools.padOrTruncate("fred", 2)); + } + + public void testPadOrTruncateCharArray() { + assertEquals("fred", StringTools.padOrTruncate(new char[] { 'f', 'r', 'e', 'd' }, 4)); + assertEquals("fred ", StringTools.padOrTruncate(new char[] { 'f', 'r', 'e', 'd' }, 6)); + assertEquals("fr", StringTools.padOrTruncate(new char[] { 'f', 'r', 'e', 'd' }, 2)); + } + + public void testPadOrTruncateOnWriter() { + this.verifyPadOrTruncateOnWriter("fred", "fred", 4); + this.verifyPadOrTruncateOnWriter("fred ", "fred", 6); + this.verifyPadOrTruncateOnWriter("fr", "fred", 2); + } + + private void verifyPadOrTruncateOnWriter(String expected, String string, int length) { + Writer writer = new StringWriter(); + StringTools.padOrTruncateOn(string, length, writer); + assertEquals(expected, writer.toString()); + } + + public void testPadOrTruncateOnStringBuffer() { + this.verifyPadOrTruncateOnStringBuffer("fred", "fred", 4); + this.verifyPadOrTruncateOnStringBuffer("fred ", "fred", 6); + this.verifyPadOrTruncateOnStringBuffer("fr", "fred", 2); + } + + private void verifyPadOrTruncateOnStringBuffer(String expected, String string, int length) { + StringBuffer sb = new StringBuffer(); + StringTools.padOrTruncateOn(string, length, sb); + assertEquals(expected, sb.toString()); + } + + public void testPadOrTruncateOnStringBuilder() { + this.verifyPadOrTruncateOnStringBuilder("fred", "fred", 4); + this.verifyPadOrTruncateOnStringBuilder("fred ", "fred", 6); + this.verifyPadOrTruncateOnStringBuilder("fr", "fred", 2); + } + + private void verifyPadOrTruncateOnStringBuilder(String expected, String string, int length) { + StringBuilder sb = new StringBuilder(); + StringTools.padOrTruncateOn(string, length, sb); + assertEquals(expected, sb.toString()); + } + + public void testZeroPad() { + assertEquals("1234", StringTools.zeroPad("1234", 4)); + assertEquals("001234", StringTools.zeroPad("1234", 6)); + boolean exThrown = false; + try { + assertEquals("12", StringTools.zeroPad("1234", 2)); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testZeroPadCharArray() { + assertEquals("1234", StringTools.zeroPad(new char[] { '1', '2', '3', '4' }, 4)); + assertEquals("001234", StringTools.zeroPad(new char[] { '1', '2', '3', '4' }, 6)); + boolean exThrown = false; + try { + assertEquals("12", StringTools.zeroPad(new char[] { '1', '2', '3', '4' }, 2)); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testZeroPadOnWriter() { + Writer writer; + writer = new StringWriter(); + StringTools.zeroPadOn("1234", 4, writer); + assertEquals("1234", writer.toString()); + + writer = new StringWriter(); + StringTools.zeroPadOn("1234", 6, writer); + assertEquals("001234", writer.toString()); + + writer = new StringWriter(); + boolean exThrown = false; + try { + StringTools.zeroPadOn("1234", 2, writer); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testZeroPadOnStringBuffer() { + StringBuffer sb; + sb = new StringBuffer(); + StringTools.zeroPadOn("1234", 4, sb); + assertEquals("1234", sb.toString()); + + sb = new StringBuffer(); + StringTools.zeroPadOn("1234", 6, sb); + assertEquals("001234", sb.toString()); + + sb = new StringBuffer(); + boolean exThrown = false; + try { + StringTools.zeroPadOn("1234", 2, sb); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testZeroPadOnStringBuilder() { + StringBuilder sb; + sb = new StringBuilder(); + StringTools.zeroPadOn("1234", 4, sb); + assertEquals("1234", sb.toString()); + + sb = new StringBuilder(); + StringTools.zeroPadOn("1234", 6, sb); + assertEquals("001234", sb.toString()); + + sb = new StringBuilder(); + boolean exThrown = false; + try { + StringTools.zeroPadOn("1234", 2, sb); + fail(); + } catch (IllegalArgumentException ex) { + exThrown = true; + } + assertTrue(exThrown); + } + + public void testZeroPadOrTruncate() { + assertEquals("1234", StringTools.zeroPadOrTruncate("1234", 4)); + assertEquals("001234", StringTools.zeroPadOrTruncate("1234", 6)); + assertEquals("34", StringTools.zeroPadOrTruncate("1234", 2)); + } + + public void testZeroPadOrTruncateCharArray() { + assertEquals("1234", StringTools.zeroPadOrTruncate(new char[] { '1', '2', '3', '4' }, 4)); + assertEquals("001234", StringTools.zeroPadOrTruncate(new char[] { '1', '2', '3', '4' }, 6)); + assertEquals("34", StringTools.zeroPadOrTruncate(new char[] { '1', '2', '3', '4' }, 2)); + } + + public void testZeroPadOrTruncateOnWriter() { + this.verifyZeroPadOrTruncateOnWriter("1234", "1234", 4); + this.verifyZeroPadOrTruncateOnWriter("001234", "1234", 6); + this.verifyZeroPadOrTruncateOnWriter("34", "1234", 2); + } + + private void verifyZeroPadOrTruncateOnWriter(String expected, String string, int length) { + Writer writer = new StringWriter(); + StringTools.zeroPadOrTruncateOn(string, length, writer); + assertEquals(expected, writer.toString()); + } + + public void testZeroPadOrTruncateOnStringBuffer() { + this.verifyZeroPadOrTruncateOnStringBuffer("1234", "1234", 4); + this.verifyZeroPadOrTruncateOnStringBuffer("001234", "1234", 6); + this.verifyZeroPadOrTruncateOnStringBuffer("34", "1234", 2); + } + + private void verifyZeroPadOrTruncateOnStringBuffer(String expected, String string, int length) { + StringBuffer sb = new StringBuffer(); + StringTools.zeroPadOrTruncateOn(string, length, sb); + assertEquals(expected, sb.toString()); + } + + public void testZeroPadOrTruncateOnStringBuilder() { + this.verifyZeroPadOrTruncateOnStringBuilder("1234", "1234", 4); + this.verifyZeroPadOrTruncateOnStringBuilder("001234", "1234", 6); + this.verifyZeroPadOrTruncateOnStringBuilder("34", "1234", 2); + } + + private void verifyZeroPadOrTruncateOnStringBuilder(String expected, String string, int length) { + StringBuilder sb = new StringBuilder(); + StringTools.zeroPadOrTruncateOn(string, length, sb); + assertEquals(expected, sb.toString()); + } + + // ********** separating ********** + + public void testSeparateStringCharInt() { + this.verifySeparate("012345", '-', 22, "012345"); + this.verifySeparate("012345", '-', 6, "012345"); + this.verifySeparate("012345", '-', 5, "01234-5"); + this.verifySeparate("012345", '-', 4, "0123-45"); + this.verifySeparate("012345", '-', 3, "012-345"); + this.verifySeparate("012345", '-', 2, "01-23-45"); + this.verifySeparate("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparate(String string, char separator, int segmentLength, String expected) { + assertEquals(expected, StringTools.separate(string, separator, segmentLength)); + } + + public void testSeparateOnStringCharIntWriter() { + this.verifySeparateOnWriter("012345", '-', 22, "012345"); + this.verifySeparateOnWriter("012345", '-', 6, "012345"); + this.verifySeparateOnWriter("012345", '-', 5, "01234-5"); + this.verifySeparateOnWriter("012345", '-', 4, "0123-45"); + this.verifySeparateOnWriter("012345", '-', 3, "012-345"); + this.verifySeparateOnWriter("012345", '-', 2, "01-23-45"); + this.verifySeparateOnWriter("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateOnWriter(String string, char separator, int segmentLength, String expected) { + Writer writer = new StringWriter(); + StringTools.separateOn(string, separator, segmentLength, writer); + assertEquals(expected, writer.toString()); + } + + public void testSeparateOnStringCharIntStringBuffer() { + this.verifySeparateOnStringBuffer("012345", '-', 22, "012345"); + this.verifySeparateOnStringBuffer("012345", '-', 6, "012345"); + this.verifySeparateOnStringBuffer("012345", '-', 5, "01234-5"); + this.verifySeparateOnStringBuffer("012345", '-', 4, "0123-45"); + this.verifySeparateOnStringBuffer("012345", '-', 3, "012-345"); + this.verifySeparateOnStringBuffer("012345", '-', 2, "01-23-45"); + this.verifySeparateOnStringBuffer("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateOnStringBuffer(String string, char separator, int segmentLength, String expected) { + StringBuffer sb = new StringBuffer(); + StringTools.separateOn(string, separator, segmentLength, sb); + assertEquals(expected, sb.toString()); + } + + public void testSeparateOnStringCharIntStringBuilder() { + this.verifySeparateOnStringBuilder("012345", '-', 22, "012345"); + this.verifySeparateOnStringBuilder("012345", '-', 6, "012345"); + this.verifySeparateOnStringBuilder("012345", '-', 5, "01234-5"); + this.verifySeparateOnStringBuilder("012345", '-', 4, "0123-45"); + this.verifySeparateOnStringBuilder("012345", '-', 3, "012-345"); + this.verifySeparateOnStringBuilder("012345", '-', 2, "01-23-45"); + this.verifySeparateOnStringBuilder("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateOnStringBuilder(String string, char separator, int segmentLength, String expected) { + StringBuilder sb = new StringBuilder(); + StringTools.separateOn(string, separator, segmentLength, sb); + assertEquals(expected, sb.toString()); + } + + public void testSeparateCharArrayCharInt() { + this.verifySeparateCharArray("012345", '-', 22, "012345"); + this.verifySeparateCharArray("012345", '-', 6, "012345"); + this.verifySeparateCharArray("012345", '-', 5, "01234-5"); + this.verifySeparateCharArray("012345", '-', 4, "0123-45"); + this.verifySeparateCharArray("012345", '-', 3, "012-345"); + this.verifySeparateCharArray("012345", '-', 2, "01-23-45"); + this.verifySeparateCharArray("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateCharArray(String string, char separator, int segmentLength, String expected) { + assertEquals(expected, StringTools.separate(string.toCharArray(), separator, segmentLength)); + } + + public void testSeparateOnCharArrayCharIntWriter() { + this.verifySeparateCharArrayOnWriter("012345", '-', 22, "012345"); + this.verifySeparateCharArrayOnWriter("012345", '-', 6, "012345"); + this.verifySeparateCharArrayOnWriter("012345", '-', 5, "01234-5"); + this.verifySeparateCharArrayOnWriter("012345", '-', 4, "0123-45"); + this.verifySeparateCharArrayOnWriter("012345", '-', 3, "012-345"); + this.verifySeparateCharArrayOnWriter("012345", '-', 2, "01-23-45"); + this.verifySeparateCharArrayOnWriter("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateCharArrayOnWriter(String string, char separator, int segmentLength, String expected) { + Writer writer = new StringWriter(); + StringTools.separateOn(string.toCharArray(), separator, segmentLength, writer); + assertEquals(expected, writer.toString()); + } + + public void testSeparateOnCharArrayCharIntStringBuffer() { + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 22, "012345"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 6, "012345"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 5, "01234-5"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 4, "0123-45"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 3, "012-345"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 2, "01-23-45"); + this.verifySeparateCharArrayOnStringBuffer("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateCharArrayOnStringBuffer(String string, char separator, int segmentLength, String expected) { + StringBuffer sb = new StringBuffer(); + StringTools.separateOn(string.toCharArray(), separator, segmentLength, sb); + assertEquals(expected, sb.toString()); + } + + public void testSeparateOnCharArrayCharIntStringBuilder() { + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 22, "012345"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 6, "012345"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 5, "01234-5"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 4, "0123-45"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 3, "012-345"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 2, "01-23-45"); + this.verifySeparateCharArrayOnStringBuilder("012345", '-', 1, "0-1-2-3-4-5"); + } + + private void verifySeparateCharArrayOnStringBuilder(String string, char separator, int segmentLength, String expected) { + StringBuilder sb = new StringBuilder(); + StringTools.separateOn(string.toCharArray(), separator, segmentLength, sb); + assertEquals(expected, sb.toString()); + } + + // ********** delimiting ********** + + public void testDelimit() { + this.verifyDelimit("Employee", "123", "123Employee123"); + this.verifyDelimit("123", "123", "123123123"); + this.verifyDelimit("", "123", "123123"); + } + + private void verifyDelimit(String string, String delimiter, String expectedString) { + assertEquals(expectedString, StringTools.delimit(string, delimiter)); + } + + public void testDelimitOnWriter() { + this.verifyDelimitOnWriter("Employee", "123", "123Employee123"); + this.verifyDelimitOnWriter("123", "123", "123123123"); + this.verifyDelimitOnWriter("", "123", "123123"); + } + + private void verifyDelimitOnWriter(String string, String delimiter, String expectedString) { + Writer writer = new StringWriter(); + StringTools.delimitOn(string, delimiter, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testDelimitOnStringBuffer() { + this.verifyDelimitOnStringBuffer("Employee", "123", "123Employee123"); + this.verifyDelimitOnStringBuffer("123", "123", "123123123"); + this.verifyDelimitOnStringBuffer("", "123", "123123"); + } + + private void verifyDelimitOnStringBuffer(String string, String delimiter, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.delimitOn(string, delimiter, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testDelimitOnStringBuilder() { + this.verifyDelimitOnStringBuilder("Employee", "123", "123Employee123"); + this.verifyDelimitOnStringBuilder("123", "123", "123123123"); + this.verifyDelimitOnStringBuilder("", "123", "123123"); + } + + private void verifyDelimitOnStringBuilder(String string, String delimiter, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.delimitOn(string, delimiter, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testQuote() { + this.verifyQuote("Employee", "\"Employee\""); + this.verifyQuote("123", "\"123\""); + this.verifyQuote("", "\"\""); + this.verifyQuote("Emp\"loyee", "\"Emp\"\"loyee\""); + } + + private void verifyQuote(String string, String expectedString) { + assertEquals(expectedString, StringTools.quote(string)); + } + + public void testQuoteOnWriter() { + this.verifyQuoteOnWriter("Employee", "\"Employee\""); + this.verifyQuoteOnWriter("123", "\"123\""); + this.verifyQuoteOnWriter("", "\"\""); + this.verifyQuoteOnWriter("Emp\"loyee", "\"Emp\"\"loyee\""); + } + + private void verifyQuoteOnWriter(String string, String expectedString) { + Writer writer = new StringWriter(); + StringTools.quoteOn(string, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testQuoteOnStringBuffer() { + this.verifyQuoteOnStringBuffer("Employee", "\"Employee\""); + this.verifyQuoteOnStringBuffer("123", "\"123\""); + this.verifyQuoteOnStringBuffer("", "\"\""); + this.verifyQuoteOnStringBuffer("Emp\"loyee", "\"Emp\"\"loyee\""); + } + + private void verifyQuoteOnStringBuffer(String string, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.quoteOn(string, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testQuoteOnStringBuilder() { + this.verifyQuoteOnStringBuilder("Employee", "\"Employee\""); + this.verifyQuoteOnStringBuilder("123", "\"123\""); + this.verifyQuoteOnStringBuilder("", "\"\""); + this.verifyQuoteOnStringBuilder("Emp\"loyee", "\"Emp\"\"loyee\""); + } + + private void verifyQuoteOnStringBuilder(String string, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.quoteOn(string, sb); + assertEquals(expectedString, sb.toString()); + } + + // ********** removing characters ********** + + public void testRemoveFirstOccurrence() { + this.verifyRemoveFirstOccurrence("Emplo&yee", '&', "Employee"); + this.verifyRemoveFirstOccurrence("Emplo&yee&", '&', "Employee&"); + this.verifyRemoveFirstOccurrence("Employee &Foo", '&', "Employee Foo"); + this.verifyRemoveFirstOccurrence("Employee&", '&', "Employee"); + this.verifyRemoveFirstOccurrence("&Employee", '&', "Employee"); + } + + private void verifyRemoveFirstOccurrence(String string, char charToRemove, String expectedString) { + assertEquals(expectedString, StringTools.removeFirstOccurrence(string, charToRemove)); + } + + public void testRemoveFirstOccurrenceCharArray() { + this.verifyRemoveFirstOccurrenceCharArray("Emplo&yee", '&', "Employee"); + this.verifyRemoveFirstOccurrenceCharArray("Emplo&yee&", '&', "Employee&"); + this.verifyRemoveFirstOccurrenceCharArray("Employee &Foo", '&', "Employee Foo"); + this.verifyRemoveFirstOccurrenceCharArray("Employee&", '&', "Employee"); + this.verifyRemoveFirstOccurrenceCharArray("&Employee", '&', "Employee"); + } + + private void verifyRemoveFirstOccurrenceCharArray(String string, char charToRemove, String expectedString) { + assertEquals(expectedString, StringTools.removeFirstOccurrence(string.toCharArray(), charToRemove)); + } + + public void testRemoveFirstOccurrenceOnWriter() { + this.verifyRemoveFirstOccurrenceOnWriter("Emplo&yee", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnWriter("Emplo&yee&", '&', "Employee&"); + this.verifyRemoveFirstOccurrenceOnWriter("Employee &Foo", '&', "Employee Foo"); + this.verifyRemoveFirstOccurrenceOnWriter("Employee&", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnWriter("&Employee", '&', "Employee"); + } + + private void verifyRemoveFirstOccurrenceOnWriter(String string, char charToRemove, String expectedString) { + Writer writer = new StringWriter(); + StringTools.removeFirstOccurrenceOn(string, charToRemove, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testRemoveFirstOccurrenceOnStringBuffer() { + this.verifyRemoveFirstOccurrenceOnStringBuffer("Emplo&yee", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnStringBuffer("Emplo&yee&", '&', "Employee&"); + this.verifyRemoveFirstOccurrenceOnStringBuffer("Employee &Foo", '&', "Employee Foo"); + this.verifyRemoveFirstOccurrenceOnStringBuffer("Employee&", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnStringBuffer("&Employee", '&', "Employee"); + } + + private void verifyRemoveFirstOccurrenceOnStringBuffer(String string, char charToRemove, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.removeFirstOccurrenceOn(string, charToRemove, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testRemoveFirstOccurrenceOnStringBuilder() { + this.verifyRemoveFirstOccurrenceOnStringBuilder("Emplo&yee", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnStringBuilder("Emplo&yee&", '&', "Employee&"); + this.verifyRemoveFirstOccurrenceOnStringBuilder("Employee &Foo", '&', "Employee Foo"); + this.verifyRemoveFirstOccurrenceOnStringBuilder("Employee&", '&', "Employee"); + this.verifyRemoveFirstOccurrenceOnStringBuilder("&Employee", '&', "Employee"); + } + + private void verifyRemoveFirstOccurrenceOnStringBuilder(String string, char charToRemove, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.removeFirstOccurrenceOn(string, charToRemove, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testRemoveAllOccurrences() { + this.verifyRemoveAllOccurrences("Employee Fred", ' ', "EmployeeFred"); + this.verifyRemoveAllOccurrences(" Employee ", ' ', "Employee"); + this.verifyRemoveAllOccurrences("Employee Foo", ' ', "EmployeeFoo"); + this.verifyRemoveAllOccurrences(" Emp loyee Foo", ' ', "EmployeeFoo"); + } + + private void verifyRemoveAllOccurrences(String string, char charToRemove, String expectedString) { + assertEquals(expectedString, StringTools.removeAllOccurrences(string, charToRemove)); + } + + public void testRemoveAllOccurrencesCharArray() { + this.verifyRemoveAllOccurrencesCharArray("Employee Fred", ' ', "EmployeeFred"); + this.verifyRemoveAllOccurrencesCharArray(" Employee ", ' ', "Employee"); + this.verifyRemoveAllOccurrencesCharArray("Employee Foo", ' ', "EmployeeFoo"); + this.verifyRemoveAllOccurrencesCharArray(" Emp loyee Foo", ' ', "EmployeeFoo"); + } + + private void verifyRemoveAllOccurrencesCharArray(String string, char charToRemove, String expectedString) { + assertEquals(expectedString, StringTools.removeAllOccurrences(string.toCharArray(), charToRemove)); + } + + public void testRemoveAllOccurrencesOnWriter() { + this.verifyRemoveAllOccurrencesOnWriter("Employee Fred", ' ', "EmployeeFred"); + this.verifyRemoveAllOccurrencesOnWriter(" Employee ", ' ', "Employee"); + this.verifyRemoveAllOccurrencesOnWriter("Employee Foo", ' ', "EmployeeFoo"); + this.verifyRemoveAllOccurrencesOnWriter(" Emp loyee Foo", ' ', "EmployeeFoo"); + } + + private void verifyRemoveAllOccurrencesOnWriter(String string, char charToRemove, String expectedString) { + Writer writer = new StringWriter(); + StringTools.removeAllOccurrencesOn(string, charToRemove, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testRemoveAllOccurrencesOnStringBuffer() { + this.verifyRemoveAllOccurrencesOnStringBuffer("Employee Fred", ' ', "EmployeeFred"); + this.verifyRemoveAllOccurrencesOnStringBuffer(" Employee ", ' ', "Employee"); + this.verifyRemoveAllOccurrencesOnStringBuffer("Employee Foo", ' ', "EmployeeFoo"); + this.verifyRemoveAllOccurrencesOnStringBuffer(" Emp loyee Foo", ' ', "EmployeeFoo"); + } + + private void verifyRemoveAllOccurrencesOnStringBuffer(String string, char charToRemove, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.removeAllOccurrencesOn(string, charToRemove, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testRemoveAllOccurrencesOnStringBuilder() { + this.verifyRemoveAllOccurrencesOnStringBuilder("Employee Fred", ' ', "EmployeeFred"); + this.verifyRemoveAllOccurrencesOnStringBuilder(" Employee ", ' ', "Employee"); + this.verifyRemoveAllOccurrencesOnStringBuilder("Employee Foo", ' ', "EmployeeFoo"); + this.verifyRemoveAllOccurrencesOnStringBuilder(" Emp loyee Foo", ' ', "EmployeeFoo"); + } + + private void verifyRemoveAllOccurrencesOnStringBuilder(String string, char charToRemove, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.removeAllOccurrencesOn(string, charToRemove, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testRemoveAllWhitespace() { + this.verifyRemoveAllWhitespace("Employee Fred\t", "EmployeeFred"); + this.verifyRemoveAllWhitespace("\tEmployee\n", "Employee"); + this.verifyRemoveAllWhitespace("Employee \t Foo", "EmployeeFoo"); + this.verifyRemoveAllWhitespace(" Emp\tloyee \n Foo", "EmployeeFoo"); + } + + private void verifyRemoveAllWhitespace(String string, String expectedString) { + assertEquals(expectedString, StringTools.removeAllWhitespace(string)); + } + + public void testRemoveAllWhitespaceCharArray() { + this.verifyRemoveAllWhitespaceCharArray("Employee Fred\t", "EmployeeFred"); + this.verifyRemoveAllWhitespaceCharArray("\tEmployee\n", "Employee"); + this.verifyRemoveAllWhitespaceCharArray("Employee \t Foo", "EmployeeFoo"); + this.verifyRemoveAllWhitespaceCharArray(" Emp\tloyee \n Foo", "EmployeeFoo"); + } + + private void verifyRemoveAllWhitespaceCharArray(String string, String expectedString) { + assertEquals(expectedString, StringTools.removeAllWhitespace(string.toCharArray())); + } + + public void testRemoveAllWhitespaceOnWriter() { + this.verifyRemoveAllWhitespaceOnWriter("Employee Fred\t", "EmployeeFred"); + this.verifyRemoveAllWhitespaceOnWriter("\tEmployee\n", "Employee"); + this.verifyRemoveAllWhitespaceOnWriter("Employee \t Foo", "EmployeeFoo"); + this.verifyRemoveAllWhitespaceOnWriter(" Emp\tloyee \n Foo", "EmployeeFoo"); + } + + private void verifyRemoveAllWhitespaceOnWriter(String string, String expectedString) { + Writer writer = new StringWriter(); + StringTools.removeAllWhitespaceOn(string, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testRemoveAllWhitespaceOnStringBuffer() { + this.verifyRemoveAllWhitespaceOnStringBuffer("Employee Fred\t", "EmployeeFred"); + this.verifyRemoveAllWhitespaceOnStringBuffer("\tEmployee\n", "Employee"); + this.verifyRemoveAllWhitespaceOnStringBuffer("Employee \t Foo", "EmployeeFoo"); + this.verifyRemoveAllWhitespaceOnStringBuffer(" Emp\tloyee \n Foo", "EmployeeFoo"); + } + + private void verifyRemoveAllWhitespaceOnStringBuffer(String string, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.removeAllWhitespaceOn(string, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testRemoveAllWhitespaceOnStringBuilder() { + this.verifyRemoveAllWhitespaceOnStringBuilder("Employee Fred\t", "EmployeeFred"); + this.verifyRemoveAllWhitespaceOnStringBuilder("\tEmployee\n", "Employee"); + this.verifyRemoveAllWhitespaceOnStringBuilder("Employee \t Foo", "EmployeeFoo"); + this.verifyRemoveAllWhitespaceOnStringBuilder(" Emp\tloyee \n Foo", "EmployeeFoo"); + } + + private void verifyRemoveAllWhitespaceOnStringBuilder(String string, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.removeAllWhitespaceOn(string, sb); + assertEquals(expectedString, sb.toString()); + } +////////////////////////////// + public void testCompressWhitespace() { + this.verifyCompressWhitespace("Employee Fred\t", "Employee Fred "); + this.verifyCompressWhitespace("\tEmployee \n", " Employee "); + this.verifyCompressWhitespace("Employee \t Foo", "Employee Foo"); + this.verifyCompressWhitespace(" Emp\tloyee \n Foo ", " Emp loyee Foo "); + } + + private void verifyCompressWhitespace(String string, String expectedString) { + assertEquals(expectedString, StringTools.compressWhitespace(string)); + } + + public void testCompressWhitespaceCharArray() { + this.verifyCompressWhitespaceCharArray("Employee Fred\t", "Employee Fred "); + this.verifyCompressWhitespaceCharArray("\tEmployee \n", " Employee "); + this.verifyCompressWhitespaceCharArray("Employee \t Foo", "Employee Foo"); + this.verifyCompressWhitespaceCharArray(" Emp\tloyee \n Foo ", " Emp loyee Foo "); + } + + private void verifyCompressWhitespaceCharArray(String string, String expectedString) { + assertEquals(expectedString, StringTools.compressWhitespace(string.toCharArray())); + } + + public void testCompressWhitespaceOnWriter() { + this.verifyCompressWhitespaceOnWriter("Employee Fred\t", "Employee Fred "); + this.verifyCompressWhitespaceOnWriter("\tEmployee \n", " Employee "); + this.verifyCompressWhitespaceOnWriter("Employee \t Foo", "Employee Foo"); + this.verifyCompressWhitespaceOnWriter(" Emp\tloyee \n Foo ", " Emp loyee Foo "); + } + + private void verifyCompressWhitespaceOnWriter(String string, String expectedString) { + Writer writer = new StringWriter(); + StringTools.compressWhitespaceOn(string, writer); + assertEquals(expectedString, writer.toString()); + } + + public void testCompressWhitespaceOnStringBuffer() { + this.verifyCompressWhitespaceOnStringBuffer("Employee Fred\t", "Employee Fred "); + this.verifyCompressWhitespaceOnStringBuffer("\tEmployee \n", " Employee "); + this.verifyCompressWhitespaceOnStringBuffer("Employee \t Foo", "Employee Foo"); + this.verifyCompressWhitespaceOnStringBuffer(" Emp\tloyee \n Foo ", " Emp loyee Foo "); + } + + private void verifyCompressWhitespaceOnStringBuffer(String string, String expectedString) { + StringBuffer sb = new StringBuffer(); + StringTools.compressWhitespaceOn(string, sb); + assertEquals(expectedString, sb.toString()); + } + + public void testCompressWhitespaceOnStringBuilder() { + this.verifyCompressWhitespaceOnStringBuilder("Employee Fred\t", "Employee Fred "); + this.verifyCompressWhitespaceOnStringBuilder("\tEmployee \n", " Employee "); + this.verifyCompressWhitespaceOnStringBuilder("Employee \t Foo", "Employee Foo"); + this.verifyCompressWhitespaceOnStringBuilder(" Emp\tloyee \n Foo ", " Emp loyee Foo "); + } + + private void verifyCompressWhitespaceOnStringBuilder(String string, String expectedString) { + StringBuilder sb = new StringBuilder(); + StringTools.compressWhitespaceOn(string, sb); + assertEquals(expectedString, sb.toString()); + } + + // ********** common prefix ********** + + public void testCommonPrefixLength() { + assertEquals(3, StringTools.commonPrefixLength("fooZZZ", "fooBBB")); + assertEquals(3, StringTools.commonPrefixLength("foo", "fooBBB")); + assertEquals(3, StringTools.commonPrefixLength("fooZZZ", "foo")); + assertEquals(3, StringTools.commonPrefixLength("foo", "foo")); + } + + public void testCommonPrefixLengthMax() { + assertEquals(2, StringTools.commonPrefixLength("fooZZZ", "fooBBB", 2)); + assertEquals(2, StringTools.commonPrefixLength("foo", "fooBBB", 2)); + assertEquals(2, StringTools.commonPrefixLength("fooZZZ", "foo", 2)); + assertEquals(2, StringTools.commonPrefixLength("foo", "foo", 2)); + } + + // ********** capitalization ********** + + public void testCapitalizeCharArray() { + this.verifyCapitalizeCharArray("Oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeCharArray("Oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeCharArray(" ", new char[] { ' ', ' ', ' ' }); + this.verifyCapitalizeCharArray("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyCapitalizeCharArray("", new char[0]); + this.verifyCapitalizeCharArray("A", new char[] { 'a' }); + this.verifyCapitalizeCharArray("\u00C9cole", new char[] { '\u00E9', 'c', 'o', 'l', 'e' }); + } + + private void verifyCapitalizeCharArray(String expected, char[] string) { + assertEquals(expected, StringTools.capitalize(string)); + } + + public void testCapitalizeString() { + this.verifyCapitalizeString("Oracle", "Oracle"); + this.verifyCapitalizeString("Oracle", "oracle"); + this.verifyCapitalizeString(" ", " "); + this.verifyCapitalizeString("ORACLE", "ORACLE"); + this.verifyCapitalizeString("", ""); + this.verifyCapitalizeString("A", "a"); + this.verifyCapitalizeString("\u00C9cole", "\u00E9cole"); // �cole->�COLE + } + + private void verifyCapitalizeString(String expected, String string) { + assertEquals(expected, StringTools.capitalize(string)); + } + + public void testCapitalizeOnCharArrayStringBuffer() { + this.verifyCapitalizeOnCharArrayStringBuffer("Oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayStringBuffer("Oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayStringBuffer(" ", new char[] { ' ', ' ', ' ' }); + this.verifyCapitalizeOnCharArrayStringBuffer("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyCapitalizeOnCharArrayStringBuffer("", new char[0]); + this.verifyCapitalizeOnCharArrayStringBuffer("A", new char[] { 'a' }); + this.verifyCapitalizeOnCharArrayStringBuffer("\u00C9cole", new char[] { '\u00E9', 'c', 'o', 'l', 'e' }); + } + + private void verifyCapitalizeOnCharArrayStringBuffer(String expected, char[] string) { + StringBuffer sb = new StringBuffer(); + StringTools.capitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testCapitalizeOnCharArrayStringBuilder() { + this.verifyCapitalizeOnCharArrayStringBuilder("Oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayStringBuilder("Oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayStringBuilder(" ", new char[] { ' ', ' ', ' ' }); + this.verifyCapitalizeOnCharArrayStringBuilder("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyCapitalizeOnCharArrayStringBuilder("", new char[0]); + this.verifyCapitalizeOnCharArrayStringBuilder("A", new char[] { 'a' }); + this.verifyCapitalizeOnCharArrayStringBuilder("\u00C9cole", new char[] { '\u00E9', 'c', 'o', 'l', 'e' }); + } + + private void verifyCapitalizeOnCharArrayStringBuilder(String expected, char[] string) { + StringBuilder sb = new StringBuilder(); + StringTools.capitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testCapitalizeOnStringStringBuffer() { + this.verifyCapitalizeOnStringStringBuffer("Oracle", "Oracle"); + this.verifyCapitalizeOnStringStringBuffer("Oracle", "oracle"); + this.verifyCapitalizeOnStringStringBuffer(" ", " "); + this.verifyCapitalizeOnStringStringBuffer("ORACLE", "ORACLE"); + this.verifyCapitalizeOnStringStringBuffer("", ""); + this.verifyCapitalizeOnStringStringBuffer("A", "a"); + this.verifyCapitalizeOnStringStringBuffer("\u00C9cole", "\u00E9cole"); // �cole->�COLE + } + + private void verifyCapitalizeOnStringStringBuffer(String expected, String string) { + StringBuffer sb = new StringBuffer(); + StringTools.capitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testCapitalizeOnStringStringBuilder() { + this.verifyCapitalizeOnStringStringBuilder("Oracle", "Oracle"); + this.verifyCapitalizeOnStringStringBuilder("Oracle", "oracle"); + this.verifyCapitalizeOnStringStringBuilder(" ", " "); + this.verifyCapitalizeOnStringStringBuilder("ORACLE", "ORACLE"); + this.verifyCapitalizeOnStringStringBuilder("", ""); + this.verifyCapitalizeOnStringStringBuilder("A", "a"); + this.verifyCapitalizeOnStringStringBuilder("\u00C9cole", "\u00E9cole"); // �cole->�COLE + } + + private void verifyCapitalizeOnStringStringBuilder(String expected, String string) { + StringBuilder sb = new StringBuilder(); + StringTools.capitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testCapitalizeOnCharArrayWriter() { + this.verifyCapitalizeOnCharArrayWriter("Oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayWriter("Oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyCapitalizeOnCharArrayWriter(" ", new char[] { ' ', ' ', ' ' }); + this.verifyCapitalizeOnCharArrayWriter("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyCapitalizeOnCharArrayWriter("", new char[0]); + this.verifyCapitalizeOnCharArrayWriter("A", new char[] { 'a' }); + this.verifyCapitalizeOnCharArrayWriter("\u00C9cole", new char[] { '\u00E9', 'c', 'o', 'l', 'e' }); + } + + private void verifyCapitalizeOnCharArrayWriter(String expected, char[] string) { + Writer writer = new StringWriter(); + StringTools.capitalizeOn(string, writer); + assertEquals(expected, writer.toString()); + } + + public void testCapitalizeOnStringWriter() { + this.verifyCapitalizeOnStringWriter("Oracle", "Oracle"); + this.verifyCapitalizeOnStringWriter("Oracle", "oracle"); + this.verifyCapitalizeOnStringWriter(" ", " "); + this.verifyCapitalizeOnStringWriter("ORACLE", "ORACLE"); + this.verifyCapitalizeOnStringWriter("", ""); + this.verifyCapitalizeOnStringWriter("A", "a"); + this.verifyCapitalizeOnStringWriter("\u00C9cole", "\u00E9cole"); // �cole->�COLE + } + + private void verifyCapitalizeOnStringWriter(String expected, String string) { + Writer writer = new StringWriter(); + StringTools.capitalizeOn(string, writer); + assertEquals(expected, writer.toString()); + } + + public void testUnapitalizeCharArray() { + this.verifyUncapitalizeCharArray("oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeCharArray("oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeCharArray(" ", new char[] { ' ', ' ', ' ' }); + this.verifyUncapitalizeCharArray("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyUncapitalizeCharArray("", new char[0]); + this.verifyUncapitalizeCharArray("a", new char[] { 'A' }); + this.verifyUncapitalizeCharArray("\u00E9cole", new char[] { '\u00C9', 'c', 'o', 'l', 'e' }); + } + + private void verifyUncapitalizeCharArray(String expected, char[] string) { + assertEquals(expected, StringTools.uncapitalize(string)); + } + + public void testUncapitalizeString() { + this.verifyUncapitalizeString("oracle", "Oracle"); + this.verifyUncapitalizeString("oracle", "oracle"); + this.verifyUncapitalizeString(" ", " "); + this.verifyUncapitalizeString("ORACLE", "ORACLE"); + this.verifyUncapitalizeString("", ""); + this.verifyUncapitalizeString("a", "A"); + this.verifyUncapitalizeString("\u00E9cole", "\u00C9cole"); // �cole->�COLE + } + + private void verifyUncapitalizeString(String expected, String string) { + assertEquals(expected, StringTools.uncapitalize(string)); + } + + public void testUncapitalizeOnCharArrayStringBuffer() { + this.verifyUncapitalizeOnCharArrayStringBuffer("oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayStringBuffer("oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayStringBuffer(" ", new char[] { ' ', ' ', ' ' }); + this.verifyUncapitalizeOnCharArrayStringBuffer("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyUncapitalizeOnCharArrayStringBuffer("", new char[0]); + this.verifyUncapitalizeOnCharArrayStringBuffer("a", new char[] { 'A' }); + this.verifyUncapitalizeOnCharArrayStringBuffer("\u00E9cole", new char[] { '\u00C9', 'c', 'o', 'l', 'e' }); + } + + private void verifyUncapitalizeOnCharArrayStringBuffer(String expected, char[] string) { + StringBuffer sb = new StringBuffer(); + StringTools.uncapitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testUncapitalizeOnCharArrayStringBuilder() { + this.verifyUncapitalizeOnCharArrayStringBuilder("oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayStringBuilder("oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayStringBuilder(" ", new char[] { ' ', ' ', ' ' }); + this.verifyUncapitalizeOnCharArrayStringBuilder("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyUncapitalizeOnCharArrayStringBuilder("", new char[0]); + this.verifyUncapitalizeOnCharArrayStringBuilder("a", new char[] { 'A' }); + this.verifyUncapitalizeOnCharArrayStringBuilder("\u00E9cole", new char[] { '\u00C9', 'c', 'o', 'l', 'e' }); + } + + private void verifyUncapitalizeOnCharArrayStringBuilder(String expected, char[] string) { + StringBuilder sb = new StringBuilder(); + StringTools.uncapitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testUncapitalizeOnStringStringBuffer() { + this.verifyUncapitalizeOnStringStringBuffer("oracle", "Oracle"); + this.verifyUncapitalizeOnStringStringBuffer("oracle", "oracle"); + this.verifyUncapitalizeOnStringStringBuffer(" ", " "); + this.verifyUncapitalizeOnStringStringBuffer("ORACLE", "ORACLE"); + this.verifyUncapitalizeOnStringStringBuffer("", ""); + this.verifyUncapitalizeOnStringStringBuffer("a", "A"); + this.verifyUncapitalizeOnStringStringBuffer("\u00E9cole", "\u00C9cole"); // �cole->�COLE + } + + private void verifyUncapitalizeOnStringStringBuffer(String expected, String string) { + StringBuffer sb = new StringBuffer(); + StringTools.uncapitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testUncapitalizeOnStringStringBuilder() { + this.verifyUncapitalizeOnStringStringBuilder("oracle", "Oracle"); + this.verifyUncapitalizeOnStringStringBuilder("oracle", "oracle"); + this.verifyUncapitalizeOnStringStringBuilder(" ", " "); + this.verifyUncapitalizeOnStringStringBuilder("ORACLE", "ORACLE"); + this.verifyUncapitalizeOnStringStringBuilder("", ""); + this.verifyUncapitalizeOnStringStringBuilder("a", "A"); + this.verifyUncapitalizeOnStringStringBuilder("\u00E9cole", "\u00C9cole"); // �cole->�COLE + } + + private void verifyUncapitalizeOnStringStringBuilder(String expected, String string) { + StringBuilder sb = new StringBuilder(); + StringTools.uncapitalizeOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testUncapitalizeOnCharArrayWriter() { + this.verifyUncapitalizeOnCharArrayWriter("oracle", new char[] { 'O', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayWriter("oracle", new char[] { 'o', 'r', 'a', 'c', 'l', 'e' }); + this.verifyUncapitalizeOnCharArrayWriter(" ", new char[] { ' ', ' ', ' ' }); + this.verifyUncapitalizeOnCharArrayWriter("ORACLE", new char[] { 'O', 'R', 'A', 'C', 'L', 'E' }); + this.verifyUncapitalizeOnCharArrayWriter("", new char[0]); + this.verifyUncapitalizeOnCharArrayWriter("a", new char[] { 'A' }); + this.verifyUncapitalizeOnCharArrayWriter("\u00E9cole", new char[] { '\u00C9', 'c', 'o', 'l', 'e' }); + } + + private void verifyUncapitalizeOnCharArrayWriter(String expected, char[] string) { + Writer writer = new StringWriter(); + StringTools.uncapitalizeOn(string, writer); + assertEquals(expected, writer.toString()); + } + + public void testUncapitalizeOnStringWriter() { + this.verifyUncapitalizeOnStringWriter("oracle", "Oracle"); + this.verifyUncapitalizeOnStringWriter("oracle", "oracle"); + this.verifyUncapitalizeOnStringWriter(" ", " "); + this.verifyUncapitalizeOnStringWriter("ORACLE", "ORACLE"); + this.verifyUncapitalizeOnStringWriter("", ""); + this.verifyUncapitalizeOnStringWriter("a", "A"); + this.verifyUncapitalizeOnStringWriter("\u00E9cole", "\u00C9cole"); // �cole->�COLE + } + + private void verifyUncapitalizeOnStringWriter(String expected, String string) { + Writer writer = new StringWriter(); + StringTools.uncapitalizeOn(string, writer); + assertEquals(expected, writer.toString()); + } + + // ********** #toString() ********** + + public void testBuildToStringClassName_anonymous() { + Object o = new Object(){/*anonymous subclass of Object*/}; + assertEquals("Object", StringTools.buildToStringClassName(o.getClass())); + } + + // ********** queries ********** + + public void testStringIsEmptyString() { + assertTrue(StringTools.stringIsEmpty((String) null)); + assertTrue(StringTools.stringIsEmpty("")); + assertTrue(StringTools.stringIsEmpty(" ")); + assertTrue(StringTools.stringIsEmpty(" \t\t ")); + assertTrue(StringTools.stringIsEmpty(" \t\t " + StringTools.CR)); + } + + public void testStringIsEmptyCharArray() { + assertTrue(StringTools.stringIsEmpty((char[]) null)); + this.verifyStringIsEmptyCharArray(""); + this.verifyStringIsEmptyCharArray(" \t\t "); + this.verifyStringIsEmptyCharArray(" "); + this.verifyStringIsEmptyCharArray(" \t\t " + StringTools.CR); + } + + private void verifyStringIsEmptyCharArray(String string) { + assertTrue(StringTools.stringIsEmpty(string.toCharArray())); + } + + public void testStringsAreEqualStringString() { + assertTrue(StringTools.stringsAreEqual((String) null, (String) null)); + assertFalse(StringTools.stringsAreEqual(null, "asdf")); + assertFalse(StringTools.stringsAreEqual("asdf", null)); + assertTrue(StringTools.stringsAreEqual("asdf", "asdf")); + assertFalse(StringTools.stringsAreEqual("asdf", "ASDF")); + } + + public void testStringsAreEqualCharArrayCharArray() { + assertTrue(StringTools.stringsAreEqual((char[]) null, (char[]) null)); + assertFalse(StringTools.stringsAreEqual((char[]) null, "asdf".toCharArray())); + assertFalse(StringTools.stringsAreEqual("asdf".toCharArray(), (char[]) null)); + assertTrue(StringTools.stringsAreEqual("asdf".toCharArray(), "asdf".toCharArray())); + assertFalse(StringTools.stringsAreEqual("asdf".toCharArray(), "ASDF".toCharArray())); + } + + public void testStringsAreEqualIgnoreCaseStringString() { + assertTrue(StringTools.stringsAreEqualIgnoreCase((String) null, (String) null)); + assertFalse(StringTools.stringsAreEqualIgnoreCase(null, "asdf")); + assertFalse(StringTools.stringsAreEqualIgnoreCase("asdf", null)); + assertTrue(StringTools.stringsAreEqualIgnoreCase("asdf", "asdf")); + assertTrue(StringTools.stringsAreEqualIgnoreCase("asdf", "ASDF")); + } + + public void testStringsAreEqualIgnoreCaseCharArrayCharArray() { + assertTrue(StringTools.stringsAreEqualIgnoreCase((char[]) null, (char[]) null)); + assertFalse(StringTools.stringsAreEqualIgnoreCase((char[]) null, "asdf".toCharArray())); + assertFalse(StringTools.stringsAreEqualIgnoreCase("asdf".toCharArray(), (char[]) null)); + assertTrue(StringTools.stringsAreEqualIgnoreCase("asdf".toCharArray(), "asdf".toCharArray())); + assertTrue(StringTools.stringsAreEqualIgnoreCase("asdf".toCharArray(), "ASDF".toCharArray())); + } + + public void testStringStartsWithIgnoreCaseStringString() { + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf", "as")); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf", "aS")); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf", "")); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf", "A")); + + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf", "bsdf")); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf", "g")); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf", "asdg")); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf", "asdfg")); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf", "asdfgggggg")); + } + + public void testStringStartsWithIgnoreCaseCharArrayCharArray() { + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "as".toCharArray())); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "aS".toCharArray())); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "".toCharArray())); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "A".toCharArray())); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "ASDF".toCharArray())); + assertTrue(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "asdf".toCharArray())); + + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "bsdf".toCharArray())); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "g".toCharArray())); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "asdg".toCharArray())); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "asdfg".toCharArray())); + assertFalse(StringTools.stringStartsWithIgnoreCase("asdf".toCharArray(), "asdfgggggg".toCharArray())); + } + + public void testCharactersAreEqualIgnoreCase() { + assertTrue(StringTools.charactersAreEqualIgnoreCase('a', 'a')); + assertTrue(StringTools.charactersAreEqualIgnoreCase('a', 'A')); + assertTrue(StringTools.charactersAreEqualIgnoreCase('A', 'a')); + assertTrue(StringTools.charactersAreEqualIgnoreCase('A', 'A')); + + assertFalse(StringTools.charactersAreEqualIgnoreCase('a', 'b')); + assertFalse(StringTools.charactersAreEqualIgnoreCase('A', 'b')); + } + + public void testStringIsUppercase() { + this.verifyStringIsUppercase("FOO"); + this.verifyStringIsUppercase("FOO2"); + this.verifyStringIsUppercase("F O O"); + this.denyStringIsUppercase("Foo"); + this.denyStringIsUppercase(""); + } + + private void verifyStringIsUppercase(String s) { + assertTrue(StringTools.stringIsUppercase(s)); + assertTrue(StringTools.stringIsUppercase(s.toCharArray())); + } + + private void denyStringIsUppercase(String s) { + assertFalse(StringTools.stringIsUppercase(s)); + assertFalse(StringTools.stringIsUppercase(s.toCharArray())); + } + + public void testStringIsLowercase() { + this.verifyStringIsLowercase("foo"); + this.verifyStringIsLowercase("foo2"); + this.verifyStringIsLowercase("f o o"); + this.denyStringIsLowercase("Foo"); + this.denyStringIsLowercase(""); + } + + private void verifyStringIsLowercase(String s) { + assertTrue(StringTools.stringIsLowercase(s)); + assertTrue(StringTools.stringIsLowercase(s.toCharArray())); + } + + private void denyStringIsLowercase(String s) { + assertFalse(StringTools.stringIsLowercase(s)); + assertFalse(StringTools.stringIsLowercase(s.toCharArray())); + } + + // ********** convert camel-case to all-caps ********** + + public void testConvertCamelCaseToAllCaps() { + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("test")); + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("TEST")); + assertEquals("TEST_TEST", StringTools.convertCamelCaseToAllCaps("testTest")); + assertEquals("TEST_TEST", StringTools.convertCamelCaseToAllCaps("TestTest")); + assertEquals("TEST_TEST_TEST", StringTools.convertCamelCaseToAllCaps("testTESTTest")); + assertEquals("TEST_TEST_TEST", StringTools.convertCamelCaseToAllCaps("TestTESTTest")); + assertEquals("TEST_TEST_TEST_T", StringTools.convertCamelCaseToAllCaps("TestTESTTestT")); + } + + public void testConvertCamelCaseToAllCapsOnWriter() { + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST", "test"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST", "TEST"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST_TEST", "testTest"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST_TEST", "TestTest"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST_TEST_TEST", "testTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST_TEST_TEST", "TestTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnWriter("TEST_TEST_TEST_T", "TestTESTTestT"); + } + + private void verifyConvertCamelCaseToAllCapsOnWriter(String expected, String string) { + Writer writer = new StringWriter(); + StringTools.convertCamelCaseToAllCapsOn(string, writer); + assertEquals(expected, writer.toString()); + } + + public void testConvertCamelCaseToAllCapsOnStringBuffer() { + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST", "test"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST", "TEST"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST_TEST", "testTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST_TEST", "TestTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST_TEST_TEST", "testTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST_TEST_TEST", "TestTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuffer("TEST_TEST_TEST_T", "TestTESTTestT"); + } + + private void verifyConvertCamelCaseToAllCapsOnStringBuffer(String expected, String string) { + StringBuffer sb = new StringBuffer(); + StringTools.convertCamelCaseToAllCapsOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testConvertCamelCaseToAllCapsOnStringBuilder() { + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST", "test"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST", "TEST"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST_TEST", "testTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST_TEST", "TestTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST_TEST_TEST", "testTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST_TEST_TEST", "TestTESTTest"); + this.verifyConvertCamelCaseToAllCapsOnStringBuilder("TEST_TEST_TEST_T", "TestTESTTestT"); + } + + private void verifyConvertCamelCaseToAllCapsOnStringBuilder(String expected, String string) { + StringBuilder sb = new StringBuilder(); + StringTools.convertCamelCaseToAllCapsOn(string, sb); + assertEquals(expected, sb.toString()); + } + + public void testConvertCamelCaseToAllCapsMaxLength() { + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("test", 44)); + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("test", 4)); + assertEquals("TES", StringTools.convertCamelCaseToAllCaps("test", 3)); + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("TEST", 5)); + assertEquals("TE", StringTools.convertCamelCaseToAllCaps("TEST", 2)); + assertEquals("TEST_TEST", StringTools.convertCamelCaseToAllCaps("testTest", 9)); + assertEquals("TEST_TES", StringTools.convertCamelCaseToAllCaps("testTest", 8)); + assertEquals("TEST_T", StringTools.convertCamelCaseToAllCaps("testTest", 6)); + assertEquals("TEST_", StringTools.convertCamelCaseToAllCaps("testTest", 5)); + assertEquals("TEST", StringTools.convertCamelCaseToAllCaps("testTest", 4)); + assertEquals("TEST_TEST", StringTools.convertCamelCaseToAllCaps("TestTest", 9)); + assertEquals("TEST_TEST", StringTools.convertCamelCaseToAllCaps("TestTest", 1100)); + assertEquals("TEST_TEST_", StringTools.convertCamelCaseToAllCaps("testTESTTest", 10)); + assertEquals("TEST_TEST_TEST", StringTools.convertCamelCaseToAllCaps("TestTESTTest", 14)); + assertEquals("TEST_TEST_TEST_T", StringTools.convertCamelCaseToAllCaps("TestTESTTestT", 16)); + assertEquals("TEST_TEST_TEST_", StringTools.convertCamelCaseToAllCaps("TestTESTTestT", 15)); + } + + public void testConvertCamelCaseToAllCapsMaxLengthOnWriter() { + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST", "test", 44); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST", "test", 4); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TES", "test", 3); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST", "TEST", 5); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TE", "TEST", 2); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST", "testTest", 9); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TES", "testTest", 8); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_T", "testTest", 6); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_", "testTest", 5); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST", "testTest", 4); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST", "TestTest", 9); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST", "TestTest", 1100); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST_", "testTESTTest", 10); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST_TEST", "TestTESTTest", 14); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST_TEST_T", "TestTESTTestT", 16); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnWriter("TEST_TEST_TEST_", "TestTESTTestT", 15); + } + + private void verifyConvertCamelCaseToAllCapsMaxLengthOnWriter(String expected, String string, int max) { + Writer writer = new StringWriter(); + StringTools.convertCamelCaseToAllCapsOn(string, max, writer); + assertEquals(expected, writer.toString()); + } + + public void testConvertCamelCaseToAllCapsMaxLengthOnStringBuffer() { + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST", "test", 44); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST", "test", 4); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TES", "test", 3); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST", "TEST", 5); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TE", "TEST", 2); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST", "testTest", 9); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TES", "testTest", 8); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_T", "testTest", 6); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_", "testTest", 5); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST", "testTest", 4); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST", "TestTest", 9); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST", "TestTest", 1100); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST_", "testTESTTest", 10); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST_TEST", "TestTESTTest", 14); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST_TEST_T", "TestTESTTestT", 16); + this.verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer("TEST_TEST_TEST_", "TestTESTTestT", 15); + } + + private void verifyConvertCamelCaseToAllCapsMaxLengthOnStringBuffer(String expected, String string, int max) { + StringBuffer sb = new StringBuffer(); + StringTools.convertCamelCaseToAllCapsOn(string, max, sb); + assertEquals(expected, sb.toString()); + } + + // ********** convert underscores to all-caps ********** + + public void testConvertUnderscoresToCamelCase() { + assertEquals("test", StringTools.convertUnderscoresToCamelCase("TEST", false)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("TEST_", false)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("TEST____", false)); + assertEquals("Test", StringTools.convertUnderscoresToCamelCase("TEST", true)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("TeST", false)); + assertEquals("testTest", StringTools.convertUnderscoresToCamelCase("TEST_TEST", false)); + assertEquals("testTest", StringTools.convertUnderscoresToCamelCase("TEST___TEST", false)); + assertEquals("TestTest", StringTools.convertUnderscoresToCamelCase("TEST_TEST", true)); + assertEquals("testTestTest", StringTools.convertUnderscoresToCamelCase("TEST_TEST_TEST", false)); + assertEquals("TestTestTest", StringTools.convertUnderscoresToCamelCase("TEST_TEST_TEST", true)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("TEST_TEST_TEST_T", false)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("_TEST_TEST_TEST_T", false)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("__TEST_TEST_TEST_T", false)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("TEST_TEST_TEST_T", true)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("_TEST_TEST_TEST_T", true)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("__TEST_TEST_TEST_T", true)); + } + + public void testConvertUnderscoresToCamelCaseLowercase() { + assertEquals("test", StringTools.convertUnderscoresToCamelCase("test", false)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("test_", false)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("test____", false)); + assertEquals("Test", StringTools.convertUnderscoresToCamelCase("test", true)); + assertEquals("test", StringTools.convertUnderscoresToCamelCase("test", false)); + assertEquals("testTest", StringTools.convertUnderscoresToCamelCase("test_test", false)); + assertEquals("testTest", StringTools.convertUnderscoresToCamelCase("test___test", false)); + assertEquals("TestTest", StringTools.convertUnderscoresToCamelCase("test_test", true)); + assertEquals("testTestTest", StringTools.convertUnderscoresToCamelCase("test_test_test", false)); + assertEquals("TestTestTest", StringTools.convertUnderscoresToCamelCase("test_test_test", true)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("test_test_test_t", false)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("_test_test_test_t", false)); + assertEquals("testTestTestT", StringTools.convertUnderscoresToCamelCase("__test_test_test_t", false)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("test_test_test_t", true)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("_test_test_test_t", true)); + assertEquals("TestTestTestT", StringTools.convertUnderscoresToCamelCase("__test_test_test_t", true)); + } + + public void testConvertUnderscoresToCamelCaseOnWriter() { + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "TEST_", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "TEST____", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("Test", "TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "TeST", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTest", "TEST_TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTest", "TEST___TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTest", "TEST_TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTest", "TEST_TEST_TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTest", "TEST_TEST_TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "_TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "__TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "TEST_TEST_TEST_T", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "_TEST_TEST_TEST_T", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "__TEST_TEST_TEST_T", true); + } + + public void testConvertUnderscoresToCamelCaseOnWriterLowercase() { + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "test", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "test_", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "test____", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("Test", "test", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("test", "test", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTest", "test_test", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTest", "test___test", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTest", "test_test", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTest", "test_test_test", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTest", "test_test_test", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "_test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("testTestTestT", "__test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "test_test_test_t", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "_test_test_test_t", true); + this.verifyConvertUnderscoresToCamelCaseOnWriter("TestTestTestT", "__test_test_test_t", true); + } + + private void verifyConvertUnderscoresToCamelCaseOnWriter(String expected, String string, boolean capitalizeFirstLetter) { + Writer writer = new StringWriter(); + StringTools.convertUnderscoresToCamelCaseOn(string, capitalizeFirstLetter, writer); + assertEquals(expected, writer.toString()); + } + + public void testConvertUnderscoresToCamelCaseOnStringBuffer() { + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "TEST_", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "TEST____", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("Test", "TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "TeST", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTest", "TEST_TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTest", "TEST___TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTest", "TEST_TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTest", "TEST_TEST_TEST", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTest", "TEST_TEST_TEST", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "_TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "__TEST_TEST_TEST_T", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "TEST_TEST_TEST_T", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "_TEST_TEST_TEST_T", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "__TEST_TEST_TEST_T", true); + } + + public void testConvertUnderscoresToCamelCaseOnStringBufferLowercase() { + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "test", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "test_", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "test____", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("Test", "test", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("test", "test", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTest", "test_test", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTest", "test___test", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTest", "test_test", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTest", "test_test_test", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTest", "test_test_test", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "_test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("testTestTestT", "__test_test_test_t", false); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "test_test_test_t", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "_test_test_test_t", true); + this.verifyConvertUnderscoresToCamelCaseOnStringBuffer("TestTestTestT", "__test_test_test_t", true); + } + + private void verifyConvertUnderscoresToCamelCaseOnStringBuffer(String expected, String string, boolean capitalizeFirstLetter) { + StringBuffer sb = new StringBuffer(); + StringTools.convertUnderscoresToCamelCaseOn(string, capitalizeFirstLetter, sb); + assertEquals(expected, sb.toString()); + } + + // ********** delimiting ********** + + public void testStringIsQuoted() { + this.denyStringIsQuoted("foo"); + this.verifyStringIsQuoted("\"foo\""); + + this.denyStringIsQuoted(""); + this.verifyStringIsQuoted("\"\""); + + this.denyStringIsQuoted("\""); + this.denyStringIsQuoted(" "); + this.denyStringIsQuoted("''"); + this.denyStringIsQuoted("'foo'"); + } + + private void verifyStringIsQuoted(String s) { + assertTrue(StringTools.stringIsQuoted(s)); + assertTrue(StringTools.stringIsQuoted(s.toCharArray())); + } + + private void denyStringIsQuoted(String s) { + assertFalse(StringTools.stringIsQuoted(s)); + assertFalse(StringTools.stringIsQuoted(s.toCharArray())); + } + + public void testStringIsParenthetical() { + this.denyStringIsParenthetical("foo"); + this.verifyStringIsParenthetical("(foo)"); + + this.denyStringIsParenthetical(""); + this.verifyStringIsParenthetical("()"); + + this.denyStringIsParenthetical("("); + this.denyStringIsParenthetical(" "); + this.denyStringIsParenthetical("''"); + this.denyStringIsParenthetical("'foo'"); + } + + private void verifyStringIsParenthetical(String s) { + assertTrue(StringTools.stringIsParenthetical(s)); + assertTrue(StringTools.stringIsParenthetical(s.toCharArray())); + } + + private void denyStringIsParenthetical(String s) { + assertFalse(StringTools.stringIsParenthetical(s)); + assertFalse(StringTools.stringIsParenthetical(s.toCharArray())); + } + + public void testStringIsBracketed() { + this.denyStringIsBracketed("foo"); + this.verifyStringIsBracketed("[foo]"); + + this.denyStringIsBracketed(""); + this.verifyStringIsBracketed("[]"); + + this.denyStringIsBracketed("["); + this.denyStringIsBracketed(" "); + this.denyStringIsBracketed("''"); + this.denyStringIsBracketed("'foo'"); + } + + private void verifyStringIsBracketed(String s) { + assertTrue(StringTools.stringIsBracketed(s)); + assertTrue(StringTools.stringIsBracketed(s.toCharArray())); + } + + private void denyStringIsBracketed(String s) { + assertFalse(StringTools.stringIsBracketed(s)); + assertFalse(StringTools.stringIsBracketed(s.toCharArray())); + } + + public void testStringIsBraced() { + this.denyStringIsBraced("foo"); + this.verifyStringIsBraced("{foo}"); + + this.denyStringIsBraced(""); + this.verifyStringIsBraced("{}"); + + this.denyStringIsBraced("{"); + this.denyStringIsBraced(" "); + this.denyStringIsBraced("''"); + this.denyStringIsBraced("'foo'"); + } + + private void verifyStringIsBraced(String s) { + assertTrue(StringTools.stringIsBraced(s)); + assertTrue(StringTools.stringIsBraced(s.toCharArray())); + } + + private void denyStringIsBraced(String s) { + assertFalse(StringTools.stringIsBraced(s)); + assertFalse(StringTools.stringIsBraced(s.toCharArray())); + } + + public void testStringIsChevroned() { + this.denyStringIsChevroned("foo"); + this.verifyStringIsChevroned("<foo>"); + + this.denyStringIsChevroned(""); + this.verifyStringIsChevroned("<>"); + + this.denyStringIsChevroned("{"); + this.denyStringIsChevroned(" "); + this.denyStringIsChevroned("''"); + this.denyStringIsChevroned("'foo'"); + } + + private void verifyStringIsChevroned(String s) { + assertTrue(StringTools.stringIsChevroned(s)); + assertTrue(StringTools.stringIsChevroned(s.toCharArray())); + } + + private void denyStringIsChevroned(String s) { + assertFalse(StringTools.stringIsChevroned(s)); + assertFalse(StringTools.stringIsChevroned(s.toCharArray())); + } + + public void testStringIsDelimited() { + this.denyStringIsDelimited("foo", '?'); + this.verifyStringIsDelimited("?foo?", '?'); + + this.denyStringIsDelimited("", '?'); + this.verifyStringIsDelimited("\"\"", '"'); + this.verifyStringIsDelimited("?xx?", '?'); + this.denyStringIsDelimited("?xx]", '?'); + + this.denyStringIsDelimited("\"", '"'); + this.denyStringIsDelimited(" ", ' '); + this.denyStringIsDelimited("''", '"'); + this.denyStringIsDelimited("'foo'", '?'); + } + + private void verifyStringIsDelimited(String s, char c) { + assertTrue(StringTools.stringIsDelimited(s, c)); + assertTrue(StringTools.stringIsDelimited(s.toCharArray(), c)); + } + + private void denyStringIsDelimited(String s, char c) { + assertFalse(StringTools.stringIsDelimited(s, c)); + assertFalse(StringTools.stringIsDelimited(s.toCharArray(), c)); + } + + public void testStringIsDelimited2() { + this.denyStringIsDelimited2("foo", '[', ']'); + this.verifyStringIsDelimited2("{foo}", '{', '}'); + + this.denyStringIsDelimited2("", '[', ']'); + this.verifyStringIsDelimited2("[]", '[', ']'); + this.verifyStringIsDelimited2("[xx]", '[', ']'); + this.denyStringIsDelimited2("?xx]", '[', ']'); + + this.denyStringIsDelimited2("\"", '[', ']'); + this.denyStringIsDelimited2(" ", '[', ']'); + this.denyStringIsDelimited2("''", '[', ']'); + this.denyStringIsDelimited2("'foo'", '[', ']'); + } + + private void verifyStringIsDelimited2(String s, char start, char end) { + assertTrue(StringTools.stringIsDelimited(s, start, end)); + assertTrue(StringTools.stringIsDelimited(s.toCharArray(), start, end)); + } + + private void denyStringIsDelimited2(String s, char start, char end) { + assertFalse(StringTools.stringIsDelimited(s, start, end)); + assertFalse(StringTools.stringIsDelimited(s.toCharArray(), start, end)); + } + + // ********** undelimiting ********** + + public void testUndelimit() { + this.verifyUndelimit("\"foo\"", "foo"); + this.verifyUndelimit("\"\"", ""); + this.verifyUndelimit("'foo'", "foo"); + this.verifyUndelimit("\"fo\"\"o\"", "fo\"o"); + this.verifyUndelimit("\"foo\"\"\"", "foo\""); + this.verifyUndelimit("\"\"\"foo\"", "\"foo"); + this.verifyUndelimit("[foo]", "foo"); + this.verifyUndelimit("\"\"\"", "\""); + this.verifyUndelimit("\"foo\"bar\"", "foo\""); + this.verifyUndelimit("\"foo\"\"", "foo\""); + } + + private void verifyUndelimit(String s, String expected) { + assertEquals(expected, StringTools.undelimit(s)); + assertEquals(expected, StringTools.undelimit(s.toCharArray())); + } + + public void testUndelimitInt() { + this.verifyUndelimitInt("\"foo\"", 2, "o"); + this.verifyUndelimitInt("\"\"foo\"\"", 2, "foo"); + this.verifyUndelimitInt("'foo'", 2, "o"); + } + + private void verifyUndelimitInt(String s, int count, String expected) { + assertEquals(expected, StringTools.undelimit(s, count)); + assertEquals(expected, StringTools.undelimit(s.toCharArray(), count)); + } + + public void testUndelimitIntException() { + this.denyUndelimitInt("\"\"", 2); + this.denyUndelimitInt("'o'", 2); + } + + private void denyUndelimitInt(String s, int count) { + boolean exCaught = false; + try { + String bogus = StringTools.undelimit(s, count); + fail("invalid string: " + bogus); + } catch (IllegalArgumentException ex) { + exCaught = true; + } + assertTrue(exCaught); + + exCaught = false; + try { + char[] bogus = StringTools.undelimit(s.toCharArray(), count); + fail("invalid string: " + new String(bogus)); + } catch (IllegalArgumentException ex) { + exCaught = true; + } + assertTrue(exCaught); + } + + public void testUndelimitOnWriter() { + this.verifyUndelimitOnWriter("\"foo\"", "foo"); + this.verifyUndelimitOnWriter("\"\"", ""); + this.verifyUndelimitOnWriter("'foo'", "foo"); + this.verifyUndelimitOnWriter("\"fo\"\"o\"", "fo\"o"); + this.verifyUndelimitOnWriter("\"foo\"\"\"", "foo\""); + this.verifyUndelimitOnWriter("\"\"\"foo\"", "\"foo"); + this.verifyUndelimitOnWriter("[foo]", "foo"); + this.verifyUndelimitOnWriter("\"\"\"", "\""); + this.verifyUndelimitOnWriter("\"foo\"bar\"", "foo\""); + this.verifyUndelimitOnWriter("\"foo\"\"", "foo\""); + } + + private void verifyUndelimitOnWriter(String s, String expected) { + Writer writer = new StringWriter(); + StringTools.undelimitOn(s, writer); + assertEquals(expected, writer.toString()); + + writer = new StringWriter(); + StringTools.undelimitOn(s.toCharArray(), writer); + assertEquals(expected, writer.toString()); + } + + public void testUndelimitOnStringBuffer() { + this.verifyUndelimitOnStringBuffer("\"foo\"", "foo"); + this.verifyUndelimitOnStringBuffer("\"\"", ""); + this.verifyUndelimitOnStringBuffer("'foo'", "foo"); + this.verifyUndelimitOnStringBuffer("\"fo\"\"o\"", "fo\"o"); + this.verifyUndelimitOnStringBuffer("\"foo\"\"\"", "foo\""); + this.verifyUndelimitOnStringBuffer("\"\"\"foo\"", "\"foo"); + this.verifyUndelimitOnStringBuffer("[foo]", "foo"); + this.verifyUndelimitOnStringBuffer("\"\"\"", "\""); + this.verifyUndelimitOnStringBuffer("\"foo\"bar\"", "foo\""); + this.verifyUndelimitOnStringBuffer("\"foo\"\"", "foo\""); + } + + private void verifyUndelimitOnStringBuffer(String s, String expected) { + StringBuffer sb = new StringBuffer(); + StringTools.undelimitOn(s, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuffer(); + StringTools.undelimitOn(s.toCharArray(), sb); + assertEquals(expected, sb.toString()); + } + + public void testUndelimitOnStringBuilder() { + this.verifyUndelimitOnStringBuilder("\"foo\"", "foo"); + this.verifyUndelimitOnStringBuilder("\"\"", ""); + this.verifyUndelimitOnStringBuilder("'foo'", "foo"); + this.verifyUndelimitOnStringBuilder("\"fo\"\"o\"", "fo\"o"); + this.verifyUndelimitOnStringBuilder("\"foo\"\"\"", "foo\""); + this.verifyUndelimitOnStringBuilder("\"\"\"foo\"", "\"foo"); + this.verifyUndelimitOnStringBuilder("[foo]", "foo"); + this.verifyUndelimitOnStringBuilder("\"\"\"", "\""); + this.verifyUndelimitOnStringBuilder("\"foo\"bar\"", "foo\""); + this.verifyUndelimitOnStringBuilder("\"foo\"\"", "foo\""); + } + + private void verifyUndelimitOnStringBuilder(String s, String expected) { + StringBuilder sb = new StringBuilder(); + StringTools.undelimitOn(s, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuilder(); + StringTools.undelimitOn(s.toCharArray(), sb); + assertEquals(expected, sb.toString()); + } + + public void testUndelimitOnWriterCount() { + this.verifyUndelimitOnWriterCount("\"foo\"", 2, "o"); + this.verifyUndelimitOnWriterCount("\"\"\"\"", 2, ""); + this.verifyUndelimitOnWriterCount("XXfooXX", 2, "foo"); + } + + private void verifyUndelimitOnWriterCount(String s, int count, String expected) { + Writer writer = new StringWriter(); + StringTools.undelimitOn(s, count, writer); + assertEquals(expected, writer.toString()); + + writer = new StringWriter(); + StringTools.undelimitOn(s.toCharArray(), count, writer); + assertEquals(expected, writer.toString()); + } + + public void testUndelimitOnStringBufferCount() { + this.verifyUndelimitOnStringBufferCount("\"foo\"", 2, "o"); + this.verifyUndelimitOnStringBufferCount("\"\"\"\"", 2, ""); + this.verifyUndelimitOnStringBufferCount("XXfooXX", 2, "foo"); + } + + private void verifyUndelimitOnStringBufferCount(String s, int count, String expected) { + StringBuffer sb = new StringBuffer(); + StringTools.undelimitOn(s, count, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuffer(); + StringTools.undelimitOn(s.toCharArray(), count, sb); + assertEquals(expected, sb.toString()); + } + + public void testUndelimitOnStringBuilderCount() { + this.verifyUndelimitOnStringBuilderCount("\"foo\"", 2, "o"); + this.verifyUndelimitOnStringBuilderCount("\"\"\"\"", 2, ""); + this.verifyUndelimitOnStringBuilderCount("XXfooXX", 2, "foo"); + } + + private void verifyUndelimitOnStringBuilderCount(String s, int count, String expected) { + StringBuilder sb = new StringBuilder(); + StringTools.undelimitOn(s, count, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuilder(); + StringTools.undelimitOn(s.toCharArray(), count, sb); + assertEquals(expected, sb.toString()); + } + + // ********** converting to Java string literal ********** + + public void testConvertToJavaStringLiteral() { + this.verifyConvertToJavaStringLiteral("", "\"\""); + this.verifyConvertToJavaStringLiteral("\"\"", "\"\\\"\\\"\""); + this.verifyConvertToJavaStringLiteral("'foo'", "\"'foo'\""); + this.verifyConvertToJavaStringLiteral("foo\bbar", "\"foo\\bbar\""); + this.verifyConvertToJavaStringLiteral("foo\n\tbar", "\"foo\\n\\tbar\""); + this.verifyConvertToJavaStringLiteral("foo\"bar", "\"foo\\\"bar\""); + this.verifyConvertToJavaStringLiteral("foo\\bar", "\"foo\\\\bar\""); + } + + private void verifyConvertToJavaStringLiteral(String s, String expected) { + assertEquals(expected, StringTools.convertToJavaStringLiteral(s)); + assertEquals(expected, StringTools.convertToJavaStringLiteral(s.toCharArray())); + } + + public void testConvertToJavaStringLiteralOnStringBuffer() { + this.verifyConvertToJavaStringLiteralOnStringBuffer("", "\"\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("\"\"", "\"\\\"\\\"\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("'foo'", "\"'foo'\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("foo\bbar", "\"foo\\bbar\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("foo\n\tbar", "\"foo\\n\\tbar\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("foo\"bar", "\"foo\\\"bar\""); + this.verifyConvertToJavaStringLiteralOnStringBuffer("foo\\bar", "\"foo\\\\bar\""); + } + + private void verifyConvertToJavaStringLiteralOnStringBuffer(String s, String expected) { + StringBuffer sb = new StringBuffer(); + StringTools.convertToJavaStringLiteralOn(s, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuffer(); + StringTools.convertToJavaStringLiteralOn(s.toCharArray(), sb); + assertEquals(expected, sb.toString()); + } + + public void testConvertToJavaStringLiteralOnStringBuilder() { + this.verifyConvertToJavaStringLiteralOnStringBuilder("", "\"\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("\"\"", "\"\\\"\\\"\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("'foo'", "\"'foo'\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("foo\bbar", "\"foo\\bbar\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("foo\n\tbar", "\"foo\\n\\tbar\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("foo\"bar", "\"foo\\\"bar\""); + this.verifyConvertToJavaStringLiteralOnStringBuilder("foo\\bar", "\"foo\\\\bar\""); + } + + private void verifyConvertToJavaStringLiteralOnStringBuilder(String s, String expected) { + StringBuilder sb = new StringBuilder(); + StringTools.convertToJavaStringLiteralOn(s, sb); + assertEquals(expected, sb.toString()); + + sb = new StringBuilder(); + StringTools.convertToJavaStringLiteralOn(s.toCharArray(), sb); + assertEquals(expected, sb.toString()); + } + + public void testConvertToJavaStringLiteralOnWriter() { + this.verifyConvertToJavaStringLiteralOnWriter("", "\"\""); + this.verifyConvertToJavaStringLiteralOnWriter("\"\"", "\"\\\"\\\"\""); + this.verifyConvertToJavaStringLiteralOnWriter("'foo'", "\"'foo'\""); + this.verifyConvertToJavaStringLiteralOnWriter("foo\bbar", "\"foo\\bbar\""); + this.verifyConvertToJavaStringLiteralOnWriter("foo\n\tbar", "\"foo\\n\\tbar\""); + this.verifyConvertToJavaStringLiteralOnWriter("foo\"bar", "\"foo\\\"bar\""); + this.verifyConvertToJavaStringLiteralOnWriter("foo\\bar", "\"foo\\\\bar\""); + } + + private void verifyConvertToJavaStringLiteralOnWriter(String s, String expected) { + Writer writer = new StringWriter(); + StringTools.convertToJavaStringLiteralOn(s, writer); + assertEquals(expected, writer.toString()); + + writer = new StringWriter(); + StringTools.convertToJavaStringLiteralOn(s.toCharArray(), writer); + assertEquals(expected, writer.toString()); + } + +} |