/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.util; import static org.junit.Assert.assertEquals; import org.junit.Test; public class StringUtilTest { @Test public void testReplaceWithOneChar() { assertEquals("faa", StringUtil.replaceString("foo", 'o', "a")); } @Test public void testReplaceWithMultipleChars() { assertEquals("faaaa", StringUtil.replaceString("foo", 'o', "aa")); } @Test public void testReplaceStringWithString() { assertEquals("foo]]>bar", StringUtil.replaceString("foo]]>bar", "]]>", "]]>")); } @Test public void testReplaceStringWithString2() { assertEquals("replaceString didn't work with a >", "foobar", StringUtil.replaceString("foobar", "]]>", "]]>")); } @Test public void testReplaceWithNull() { assertEquals("replaceString didn't work with a char", "f", StringUtil.replaceString("foo", 'o', null)); } /** * Usually you would set the system property * "net.sourceforge.pmd.supportUTF8" to either "no" or "yes", to switch UTF8 * support. * * e.g. * <code>System.setProperty("net.sourceforge.pmd.supportUTF8","yes");</code> */ @Test public void testUTF8NotSupported() { StringBuilder sb = new StringBuilder(); String test = "é"; StringUtil.appendXmlEscaped(sb, test, false); assertEquals("é", sb.toString()); } @Test public void testUTF8NotSupportedSurrogates() { // D8 34 DD 1E -> U+1D11E StringBuilder sb = new StringBuilder(); String test = new String(new char[] {0xd834, 0xdd1e}); StringUtil.appendXmlEscaped(sb, test, false); assertEquals("𝄞", sb.toString()); } @Test public void testUTF8Supported() { StringBuilder sb = new StringBuilder(); String test = "é"; StringUtil.appendXmlEscaped(sb, test, true); assertEquals("é", sb.toString()); } public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(StringUtilTest.class); } }