You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/04/03 19:11:38 UTC

svn commit: r1088338 - in /wicket/trunk: wicket-core/src/test/java/org/apache/wicket/util/string/StringsTest.java wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java

Author: mgrigorov
Date: Sun Apr  3 17:11:38 2011
New Revision: 1088338

URL: http://svn.apache.org/viewvc?rev=1088338&view=rev
Log:
Move the tests for Strings from -core to -util, where Strings.java is.


Removed:
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/string/StringsTest.java
Modified:
    wicket/trunk/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java

Modified: wicket/trunk/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java?rev=1088338&r1=1088337&r2=1088338&view=diff
==============================================================================
--- wicket/trunk/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java (original)
+++ wicket/trunk/wicket-util/src/test/java/org/apache/wicket/util/string/StringsTest.java Sun Apr  3 17:11:38 2011
@@ -16,10 +16,16 @@
  */
 package org.apache.wicket.util.string;
 
+import java.io.UnsupportedEncodingException;
+
+import junit.framework.Assert;
 import junit.framework.TestCase;
 
 /**
+ * Tests for {@link Strings}
  * 
+ * @author Jonathan Locke
+ * @author Martijn Dashorst
  */
 public class StringsTest extends TestCase
 {
@@ -36,4 +42,467 @@ public class StringsTest extends TestCas
 		assertEquals(url + "?param=a;b",
 			Strings.stripJSessionId(url + ";jsessionid=12345?param=a;b"));
 	}
+
+	/**
+	 * 
+	 */
+	public void test()
+	{
+		Assert.assertEquals("foo", Strings.lastPathComponent("bar.garply.foo", '.'));
+		Assert.assertEquals("foo", Strings.lastPathComponent("foo", '.'));
+		Assert.assertEquals("bar", Strings.firstPathComponent("bar.garply.foo", '.'));
+		Assert.assertEquals("foo", Strings.lastPathComponent("foo", '.'));
+		Assert.assertEquals("garply.foo", Strings.afterFirstPathComponent("bar.garply.foo", '.'));
+		Assert.assertEquals("", Strings.afterFirstPathComponent("foo", '.'));
+		Assert.assertEquals("bar.baz", Strings.beforeLast("bar.baz.foo", '.'));
+		Assert.assertEquals("", Strings.beforeLast("bar", '.'));
+		Assert.assertEquals("bar", Strings.beforeFirst("bar.baz.foo", '.'));
+		Assert.assertEquals("", Strings.beforeFirst("bar", '.'));
+		Assert.assertEquals("baz.foo", Strings.afterFirst("bar.baz.foo", '.'));
+		Assert.assertEquals("", Strings.afterFirst("bar", '.'));
+		Assert.assertEquals("foo", Strings.afterLast("bar.baz.foo", '.'));
+		Assert.assertEquals("", Strings.afterLast("bar", '.'));
+		Assert.assertEquals("foo", Strings.replaceAll("afaooaaa", "a", "").toString());
+		Assert.assertEquals("fuzzyffuzzyoofuzzyfuzzyfuzzy",
+			Strings.replaceAll("afaooaaa", "a", "fuzzy").toString());
+	}
+
+	/**
+	 * Tests the <code>beforeFirst</code> method.
+	 */
+	public void testBeforeFirst()
+	{
+		assertNull(Strings.beforeFirst(null, '.'));
+		assertEquals("", Strings.beforeFirst("", '.'));
+		assertEquals("", Strings.beforeFirst("", ' '));
+		assertEquals("", Strings.beforeFirst(".", '.'));
+		assertEquals("", Strings.beforeFirst("..", '.'));
+		assertEquals("com", Strings.beforeFirst("com.foo.bar", '.'));
+		assertEquals("com", Strings.beforeFirst("com foo bar", ' '));
+		assertEquals("com foo", Strings.beforeFirst("com foo.bar", '.'));
+	}
+
+	/**
+	 * Tests the <code>afterFirst</code> method.
+	 */
+	public void testAfterFirst()
+	{
+		assertNull(Strings.afterFirst(null, '.'));
+		assertEquals("", Strings.afterFirst("", '.'));
+		assertEquals("", Strings.afterFirst("", ' '));
+		assertEquals("", Strings.afterFirst(".", '.'));
+		assertEquals(".", Strings.afterFirst("..", '.'));
+		assertEquals("foo.bar", Strings.afterFirst("com.foo.bar", '.'));
+		assertEquals("foo bar", Strings.afterFirst("com foo bar", ' '));
+		assertEquals("bar", Strings.afterFirst("com.foo bar", ' '));
+	}
+
+	/**
+	 * Tests the <code>afterLast</code> method.
+	 */
+	public void testAfterLast()
+	{
+		assertNull(Strings.afterLast(null, '.'));
+		assertEquals("", Strings.afterLast("", '.'));
+		assertEquals("", Strings.afterLast("", ' '));
+		assertEquals("", Strings.afterLast(".", '.'));
+		assertEquals("", Strings.afterLast("..", '.'));
+		assertEquals("bar", Strings.afterLast("com.foo.bar", '.'));
+		assertEquals("bar", Strings.afterLast("com foo bar", ' '));
+		assertEquals("bar", Strings.afterLast("com foo.bar", '.'));
+	}
+
+	/**
+	 * Tests the beforeLastPathComponent method
+	 */
+	public void testBeforeLastPathComponent()
+	{
+		assertNull(Strings.beforeLastPathComponent(null, '.'));
+		assertEquals("", Strings.beforeLastPathComponent("", '.'));
+		assertEquals("", Strings.beforeLastPathComponent("", ' '));
+		assertEquals("", Strings.beforeLastPathComponent(".", '.'));
+		assertEquals(".", Strings.beforeLastPathComponent("..", '.'));
+		assertEquals("foo", Strings.beforeLastPathComponent("foo.bar", '.'));
+		assertEquals("", Strings.beforeLastPathComponent("foo.bar", ' '));
+		assertEquals("foo.ba", Strings.beforeLastPathComponent("foo.bar", 'r'));
+		assertEquals("com.foo", Strings.beforeLastPathComponent("com.foo.bar", '.'));
+	}
+
+	/**
+	 * Tests the capitalize method.
+	 */
+	public void testCapitalize()
+	{
+		assertEquals("Lorem ipsum dolor sit amet", Strings.capitalize("lorem ipsum dolor sit amet"));
+		assertEquals("Lorem ipsum dolor sit amet", Strings.capitalize("Lorem ipsum dolor sit amet"));
+		assertEquals(" abcdefghijklm", Strings.capitalize(" abcdefghijklm"));
+		assertEquals("", Strings.capitalize(""));
+		assertNull(Strings.capitalize(null));
+	}
+
+	/**
+	 * Tests the escapeMarkup method.
+	 */
+	public void testEscapeMarkup()
+	{
+		assertNull(Strings.escapeMarkup(null));
+		assertEquals("", Strings.escapeMarkup("").toString());
+
+		assertEquals("&amp;", Strings.escapeMarkup("&").toString());
+
+		assertEquals("&amp;amp;", Strings.escapeMarkup("&amp;").toString());
+		assertEquals("&lt; &gt;&amp;&quot;&#039;?:;{}[]-_+=()*^%$#@!~`",
+			Strings.escapeMarkup("< >&\"'?:;{}[]-_+=()*^%$#@!~`").toString());
+		assertEquals("&lt;&nbsp;&gt;&amp;&quot;&#039;?:;{}[]-_+=()*^%$#@!~`",
+			Strings.escapeMarkup("< >&\"'?:;{}[]-_+=()*^%$#@!~`", true).toString());
+	}
+
+	/**
+	 * Tests the escapeMarkup method with whitespace.
+	 */
+	public void testEscapeMarkupWhiteSpace()
+	{
+		assertNull(Strings.escapeMarkup(null, true));
+		assertEquals("", Strings.escapeMarkup("", true).toString());
+
+		assertEquals("\n \t", Strings.escapeMarkup("\n \t", false).toString());
+		assertEquals("\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", Strings.escapeMarkup("\n \t", true)
+			.toString());
+		assertEquals("  ", Strings.escapeMarkup("  ", false).toString());
+		assertEquals("&nbsp;&nbsp;", Strings.escapeMarkup("  ", true).toString());
+	}
+
+	/**
+	 * Tests the escapeMarkup method with unicode escapes.
+	 * 
+	 * @throws UnsupportedEncodingException
+	 */
+	public void testEscapeMarkupUnicode() throws UnsupportedEncodingException
+	{
+		assertNull(Strings.escapeMarkup(null, true, true));
+		assertEquals("", Strings.escapeMarkup("", true, true).toString());
+
+		// The escaped unicode is ����������"
+		assertEquals(
+			"&#199;&#252;&#233;&#226;&#228;&#224;&#229;&#231;&#234;&#235;",
+			Strings.escapeMarkup("\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb",
+				false, true).toString());
+
+	}
+
+	/**
+	 * Tests the <code>replaceHtmlEscapeNumber</code> method.
+	 * 
+	 * @throws UnsupportedEncodingException
+	 */
+	public void testReplaceHtmlEscapeNumber() throws UnsupportedEncodingException
+	{
+		assertNull(Strings.replaceHtmlEscapeNumber(null));
+		assertEquals("", Strings.replaceHtmlEscapeNumber(""));
+		assertEquals("abcdefghijklm�", Strings.replaceHtmlEscapeNumber("abcdefghijklm�"));
+		assertEquals("a &#", Strings.replaceHtmlEscapeNumber("a &#"));
+		assertEquals(
+			"\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb",
+			Strings.replaceHtmlEscapeNumber("&#199;&#252;&#233;&#226;&#228;&#224;&#229;&#231;&#234;&#235;"));
+	}
+
+	private String convertNonASCIIString(String str) throws UnsupportedEncodingException
+	{
+		return new String(str.getBytes(), "iso-8859-1");
+	}
+
+	/**
+	 * Tests the <code>firstPathComponent</code> method.
+	 */
+	public void testFirstPathComponent()
+	{
+		assertNull(Strings.firstPathComponent(null, '.'));
+		assertEquals("", Strings.firstPathComponent("", '.'));
+		assertEquals("foo", Strings.firstPathComponent("foo", '.'));
+		assertEquals("foo", Strings.firstPathComponent("foo.bar", '.'));
+		assertEquals("foo bar", Strings.firstPathComponent("foo bar", '.'));
+	}
+
+	/**
+	 * Tests the <code>isEmpty</code> method.
+	 */
+	public void testIsEmpty()
+	{
+		assertTrue(Strings.isEmpty(null));
+		assertTrue(Strings.isEmpty(""));
+		assertTrue(Strings.isEmpty(" "));
+		assertTrue(Strings.isEmpty("           "));
+		assertTrue(Strings.isEmpty(" \n\t"));
+		assertFalse(Strings.isEmpty("a"));
+		assertFalse(Strings.isEmpty(" a"));
+	}
+
+	/**
+	 * Tests the <code>isTrue</code> method.
+	 * 
+	 * @throws StringValueConversionException
+	 */
+	public void testIsTrue() throws StringValueConversionException
+	{
+		assertFalse(Strings.isTrue(null));
+		assertFalse(Strings.isTrue(""));
+		assertFalse(Strings.isTrue(" \n \t"));
+
+		assertFalse(Strings.isTrue("no"));
+		assertFalse(Strings.isTrue("n"));
+		assertFalse(Strings.isTrue("false"));
+		assertFalse(Strings.isTrue("nO"));
+		assertFalse(Strings.isTrue("N"));
+		assertFalse(Strings.isTrue("fAlSe"));
+		assertFalse(Strings.isTrue("0"));
+
+		assertTrue(Strings.isTrue("yes"));
+		assertTrue(Strings.isTrue("y"));
+		assertTrue(Strings.isTrue("true"));
+		assertTrue(Strings.isTrue("1"));
+		assertTrue(Strings.isTrue("YeS"));
+		assertTrue(Strings.isTrue("Y"));
+		assertTrue(Strings.isTrue("tRuE"));
+		assertTrue(Strings.isTrue("1"));
+
+		try
+		{
+			Strings.isTrue("foo");
+			fail("Exception expected");
+		}
+		catch (StringValueConversionException e)
+		{
+			assertTrue(true);
+		}
+	}
+
+	/**
+	 * Tests the <code>replaceAll</code> method.
+	 */
+	public void testReplaceAll()
+	{
+		assertNull(Strings.replaceAll(null, null, null));
+		assertNull(Strings.replaceAll(null, "", null));
+		assertNull(Strings.replaceAll(null, null, ""));
+		assertNull(Strings.replaceAll(null, "", ""));
+
+		assertEquals("", Strings.replaceAll("", null, null));
+		assertEquals("", Strings.replaceAll("", "", null));
+		assertEquals("", Strings.replaceAll("", null, ""));
+		assertEquals("", Strings.replaceAll("", "", ""));
+		assertEquals("", Strings.replaceAll("", "", "abc"));
+		assertEquals("", Strings.replaceAll("", "abc", "def"));
+		assertEquals("", Strings.replaceAll("abc", "abc", "").toString());
+
+		assertEquals("abc", Strings.replaceAll("abc", "", ""));
+		assertEquals("abc", Strings.replaceAll("abc", "abc", "abc").toString());
+		assertEquals("def", Strings.replaceAll("abc", "abc", "def").toString());
+		assertEquals("abc", Strings.replaceAll("abc", "ABC", "").toString());
+
+		assertEquals("abc", Strings.replaceAll("abc", "d", null));
+		assertEquals("ab", Strings.replaceAll("abc", "c", null).toString());
+		assertEquals("bc", Strings.replaceAll("abc", "a", null).toString());
+
+		assertEquals("aaaa", Strings.replaceAll("aa", "a", "aa").toString());
+
+		StringBuilder stringBuilder = new StringBuilder("aa");
+		assertEquals("aaaa", Strings.replaceAll(stringBuilder, "a", "aa").toString());
+
+		AppendingStringBuffer asb = new AppendingStringBuffer("aa");
+		assertEquals("aaaa", Strings.replaceAll(asb, "a", "aa").toString());
+	}
+
+	/**
+	 * Tests the <code>split</code> method.
+	 */
+	public void testSplit()
+	{
+		assertEquals(new String[0], Strings.split(null, '.'));
+		assertEquals(new String[0], Strings.split("", '.'));
+		assertEquals(new String[] { "", "" }, Strings.split(".", '.'));
+		assertEquals(new String[] { "a", "" }, Strings.split("a.", '.'));
+		assertEquals(new String[] { "a", "b" }, Strings.split("a.b", '.'));
+		assertEquals(new String[] { "a", "b", "c" }, Strings.split("a.b.c", '.'));
+		assertEquals(new String[] { "a", "b", "c" }, Strings.split("a b c", ' '));
+		assertEquals(new String[] { "abc" }, Strings.split("abc", ' '));
+	}
+
+	/**
+	 * Tests the <code>stripEnding</code> method.
+	 */
+	public void testStripEnding()
+	{
+		assertNull(Strings.stripEnding(null, null));
+		assertEquals("", Strings.stripEnding("", null));
+		assertEquals("", Strings.stripEnding("", ""));
+		assertEquals("a", Strings.stripEnding("a", ""));
+		assertEquals("", Strings.stripEnding("a", "a"));
+		assertEquals("a", Strings.stripEnding("a", "aa"));
+		assertEquals("abc", Strings.stripEnding("abc", "ab"));
+	}
+
+	/**
+	 * Tests the <code>toBoolean</code> method.
+	 * 
+	 * @throws StringValueConversionException
+	 */
+	public void testToBoolean() throws StringValueConversionException
+	{
+		assertEquals(Boolean.FALSE, Strings.toBoolean(null));
+		assertEquals(Boolean.FALSE, Strings.toBoolean("off"));
+		assertEquals(Boolean.FALSE, Strings.toBoolean("no"));
+		assertEquals(Boolean.FALSE, Strings.toBoolean("n"));
+		assertEquals(Boolean.FALSE, Strings.toBoolean("false"));
+		assertEquals(Boolean.FALSE, Strings.toBoolean("0"));
+
+		assertEquals(Boolean.TRUE, Strings.toBoolean("on"));
+		assertEquals(Boolean.TRUE, Strings.toBoolean("yes"));
+		assertEquals(Boolean.TRUE, Strings.toBoolean("y"));
+		assertEquals(Boolean.TRUE, Strings.toBoolean("true"));
+		assertEquals(Boolean.TRUE, Strings.toBoolean("1"));
+
+		try
+		{
+			Strings.toBoolean("waar");
+			fail("Exception expected");
+		}
+		catch (StringValueConversionException e)
+		{
+			assertTrue(true);
+		}
+	}
+
+	/**
+	 * Tests the <code>toChar</code> method.
+	 * 
+	 * @throws StringValueConversionException
+	 */
+	public void testToChar() throws StringValueConversionException
+	{
+		assertEquals(' ', Strings.toChar(" "));
+		assertEquals('a', Strings.toChar("a"));
+
+		try
+		{
+			Strings.toChar("");
+			fail("Exception expected");
+		}
+		catch (StringValueConversionException e)
+		{
+		}
+		try
+		{
+			Strings.toChar(null);
+			fail("Exception expected");
+		}
+		catch (StringValueConversionException e)
+		{
+		}
+		try
+		{
+			Strings.toChar("aa");
+			fail("Exception expected");
+		}
+		catch (StringValueConversionException e)
+		{
+		}
+	}
+
+	/**
+	 * Tests the <code>toMultilineMarkup</code> method.
+	 */
+	public void testToMultilineMarkup()
+	{
+		assertNull(Strings.toMultilineMarkup(null));
+		assertEquals("<p></p>", Strings.toMultilineMarkup("").toString());
+		assertEquals("<p></p><p></p>", Strings.toMultilineMarkup("\n\n").toString());
+		assertEquals("<p><br/></p>", Strings.toMultilineMarkup("\n").toString());
+		assertEquals("<p>abc</p>", Strings.toMultilineMarkup("abc").toString());
+		assertEquals("<p>abc<br/></p>", Strings.toMultilineMarkup("abc\n").toString());
+		assertEquals("<p>abc<br/>def</p>", Strings.toMultilineMarkup("abc\ndef").toString());
+		assertEquals("<p>abc<br/>def</p>", Strings.toMultilineMarkup("abc\r\ndef").toString());
+		assertEquals("<p>abc<br/>def<br/>ghi</p>", Strings.toMultilineMarkup("abc\ndef\nghi")
+			.toString());
+
+		assertEquals("<p>abc</p><p>def</p><p>ghi</p>",
+			Strings.toMultilineMarkup("abc\n\ndef\n\nghi").toString());
+		assertEquals("<p>abc</p><p>def</p><p>ghi</p>",
+			Strings.toMultilineMarkup("abc\r\n\r\ndef\r\n\r\nghi").toString());
+		assertEquals("<p>abc</p><p>def</p><p>ghi</p><p></p>",
+			Strings.toMultilineMarkup("abc\r\n\r\ndef\r\n\r\nghi\n\n").toString());
+
+		assertEquals("<p>\\n</p>", Strings.toMultilineMarkup("\\n").toString());
+		assertEquals("<p>a\\nbc</p>", Strings.toMultilineMarkup("a\\nbc").toString());
+	}
+
+	/**
+	 * Tests the <code>toString</code> method.
+	 */
+	public void testToString()
+	{
+		assertNull(Strings.toString((Object)null));
+		assertEquals("", Strings.toString(""));
+
+		assertEquals("<Null Throwable>", Strings.toString(null));
+		try
+		{
+			throw new IllegalArgumentException("Foo");
+		}
+		catch (IllegalArgumentException e)
+		{
+			final String toString = Strings.toString((Object)e);
+			String before = Strings.beforeFirst(toString, '\n').trim();
+			assertEquals("Message: Foo", before);
+		}
+	}
+
+	/**
+	 * Test the toString(throwable)
+	 */
+	public void testToStringThrowable()
+	{
+		NullPointerException np = new NullPointerException("null test");
+		RuntimeException wre = new RuntimeException("null test", np);
+		String exceptionString = Strings.toString(wre);
+		assertTrue(exceptionString.length() > 1);
+		assertTrue(exceptionString.contains("RuntimeException"));
+	}
+
+	/**
+	 * Asserts that both string arrays are equal.
+	 * 
+	 * @param expected
+	 *            the expected value
+	 * @param actual
+	 *            the actual value
+	 */
+	private void assertEquals(String[] expected, String[] actual)
+	{
+		if (expected == null)
+		{
+			assertNull(actual);
+		}
+		assertEquals(stringValue(expected), stringValue(actual));
+	}
+
+	/**
+	 * Converts an array of strings to a String. ["a", "b"] becomes: "[a,b]"
+	 * 
+	 * @param arrayOfStrings
+	 *            the array to convert
+	 * @return the array as a string.
+	 */
+	private String stringValue(String[] arrayOfStrings)
+	{
+		AppendingStringBuffer sb = new AppendingStringBuffer("[");
+		String komma = "";
+		for (String str : arrayOfStrings)
+		{
+			sb.append(komma);
+			sb.append(str);
+			komma = ",";
+		}
+		sb.append("]");
+		return sb.toString();
+	}
 }