char[] c1 = "ABC".toCharArray();
// delete second position
- assertTrue(Arrays.equals(new char[] { 'A', 'C' },
- StringUtils.deleteChars(c1, 1, 2)));
+ assertTrue(
+ Arrays.equals(new char[]
+ { 'A', 'C' }, StringUtils.deleteChars(c1, 1, 2)));
// delete positions 1 and 2
- assertTrue(Arrays.equals(new char[] { 'C' },
- StringUtils.deleteChars(c1, 0, 2)));
+ assertTrue(
+ Arrays.equals(new char[]
+ { 'C' }, StringUtils.deleteChars(c1, 0, 2)));
// delete positions 1-3
assertTrue(Arrays.equals(new char[] {},
StringUtils.deleteChars(c1, 0, 3)));
// delete position 3
- assertTrue(Arrays.equals(new char[] { 'A', 'B' },
- StringUtils.deleteChars(c1, 2, 3)));
+ assertTrue(
+ Arrays.equals(new char[]
+ { 'A', 'B' }, StringUtils.deleteChars(c1, 2, 3)));
// out of range deletion is ignore
assertTrue(Arrays.equals(c1, StringUtils.deleteChars(c1, 3, 4)));
* String delimited by | containing a quoted | (should not be treated as
* delimiter)
*/
- assertEquals("[abc='|'d, ef, g]", Arrays.toString(StringUtils
- .separatorListToArray("abc='|'d|ef|g", "|")));
+ assertEquals("[abc='|'d, ef, g]", Arrays.toString(
+ StringUtils.separatorListToArray("abc='|'d|ef|g", "|")));
}
@Test(groups = { "Functional" })
assertEquals("*", StringUtils.arrayToSeparatorList(null, "*"));
assertEquals("*",
StringUtils.arrayToSeparatorList(new String[] {}, "*"));
- assertEquals(
- "a*bc*cde",
- StringUtils.arrayToSeparatorList(new String[] { "a", "bc",
- "cde" }, "*"));
- assertEquals(
- "a*cde",
- StringUtils.arrayToSeparatorList(new String[] { "a", null,
- "cde" }, "*"));
- assertEquals("a**cde", StringUtils.arrayToSeparatorList(new String[] {
- "a", "", "cde" }, "*"));
+ assertEquals("a*bc*cde",
+ StringUtils.arrayToSeparatorList(new String[]
+ { "a", "bc", "cde" }, "*"));
+ assertEquals("a*cde",
+ StringUtils.arrayToSeparatorList(new String[]
+ { "a", null, "cde" }, "*"));
+ assertEquals("a**cde",
+ StringUtils.arrayToSeparatorList(new String[]
+ { "a", "", "cde" }, "*"));
// delimiter within token is not (yet) escaped
- assertEquals("a*b*c*cde", StringUtils.arrayToSeparatorList(new String[]
- { "a", "b*c", "cde" }, "*"));
+ assertEquals("a*b*c*cde",
+ StringUtils.arrayToSeparatorList(new String[]
+ { "a", "b*c", "cde" }, "*"));
}
@Test(groups = { "Functional" })
assertEquals("now", StringUtils.listToDelimitedString(list, ";"));
list.add("is");
assertEquals("now;is", StringUtils.listToDelimitedString(list, ";"));
- assertEquals("now ; is", StringUtils.listToDelimitedString(list, " ; "));
+ assertEquals("now ; is",
+ StringUtils.listToDelimitedString(list, " ; "));
list.add("the");
list.add("winter");
list.add("of");
assertEquals(-1, StringUtils.compareVersions("2.8.3", "2.9.2"));
assertEquals(-1, StringUtils.compareVersions("2.8", "2.8.3"));
assertEquals(-1, StringUtils.compareVersions("2.8.3", "2.8.3b1", "b"));
- assertEquals(-1, StringUtils.compareVersions("2.8.3b1", "2.8.3b2", "b"));
+ assertEquals(-1,
+ StringUtils.compareVersions("2.8.3b1", "2.8.3b2", "b"));
assertEquals(-1, StringUtils.compareVersions("2.8", "2.8.0", "b"));
assertEquals(-1, StringUtils.compareVersions("2", "12"));
assertEquals(-1, StringUtils.compareVersions("3.2.4", "3.12.11"));
{
assertNull(StringUtils.stripHtmlTags(null));
assertEquals("", StringUtils.stripHtmlTags(""));
- assertEquals(
- "<a href=\"something\">label</href>",
- StringUtils
- .stripHtmlTags("<html><a href=\"something\">label</href></html>"));
+ assertEquals("<a href=\"something\">label</href>",
+ StringUtils.stripHtmlTags(
+ "<html><a href=\"something\">label</href></html>"));
// if no "<html>" tag, < and > get html-encoded (not sure why)
assertEquals("<a href=\"something\">label</href>",
- StringUtils.stripHtmlTags("<a href=\"something\">label</href>"));
+ StringUtils
+ .stripHtmlTags("<a href=\"something\">label</href>"));
// </body> gets removed but not <body> (is this intentional?)
- assertEquals("<body><p>hello",
- StringUtils.stripHtmlTags("<html><body><p>hello</body></html>"));
+ assertEquals("<body><p>hello", StringUtils
+ .stripHtmlTags("<html><body><p>hello</body></html>"));
assertEquals("kdHydro < 12.53",
StringUtils.stripHtmlTags("kdHydro < 12.53"));
}
+
+ @Test(groups = { "Functional" })
+ public void testUrlEncode()
+ {
+ // degenerate cases
+ assertNull(StringUtils.urlEncode(null, ";,"));
+ assertEquals("", StringUtils.urlEncode("", ""));
+ assertEquals("", StringUtils.urlEncode("", ";,"));
+
+ // sanity checks, see
+ // https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
+ assertEquals("+", StringUtils.urlEncode(" ", " "));
+ assertEquals("%25", StringUtils.urlEncode("%", "%"));
+ assertEquals(".", StringUtils.urlEncode(".", ".")); // note . is not encoded
+ assertEquals("%3A", StringUtils.urlEncode(":", ":"));
+ assertEquals("%3B", StringUtils.urlEncode(";", ";"));
+ assertEquals("%3D", StringUtils.urlEncode("=", "="));
+ assertEquals("%2C", StringUtils.urlEncode(",", ","));
+
+ // check % does not get recursively encoded!
+ assertEquals("a%25b%3Dc%3Bd%3Ae%2C%2C",
+ StringUtils.urlEncode("a%b=c;d:e,,", "=,;:%"));
+
+ // = not in the list for encoding
+ assertEquals("a=b", StringUtils.urlEncode("a=b", ";,"));
+
+ // encode = (as %3B) and ; (as %3D)
+ assertEquals("a%3Db.c%3B", StringUtils.urlEncode("a=b.c;", ";=,"));
+
+ // . and space not in the list for encoding
+ assertEquals("a%3Db.c d", StringUtils.urlEncode("a=b.c d", ";=,"));
+
+ // encode space also (as +)
+ assertEquals("a%3Db.c+d", StringUtils.urlEncode("a=b.c d", ";=, "));
+
+ // . does not get encoded even if requested - behaviour of URLEncoder
+ assertEquals("a%3Db.c+d.e%3Df",
+ StringUtils.urlEncode("a=b.c d.e=f", ";=,. "));
+ }
+
+ @Test(groups = { "Functional" })
+ public void testUrlDecode()
+ {
+ // degenerate cases
+ assertNull(StringUtils.urlDecode(null, ";,"));
+ assertEquals("", StringUtils.urlDecode("", ""));
+ assertEquals("", StringUtils.urlDecode("", ";,"));
+
+ // = not in the list for encoding
+ assertEquals("a%3Db", StringUtils.urlDecode("a%3Db", ";,"));
+
+ // decode = and ; but not .
+ assertEquals("a=b%3Ec; d",
+ StringUtils.urlDecode("a%3Db%3Ec; d", ";=,"));
+
+ // space not in the list for decoding
+ assertEquals("a=b;c+d", StringUtils.urlDecode("a%3Db%3Bc+d", ";=,"));
+
+ // decode space also; %3E is not decoded to .
+ assertEquals("a=b%3Ec d=,",
+ StringUtils.urlDecode("a%3Db%3Ec+d%3D%2C", ";=, "));
+
+ // decode encoded % (%25)
+ assertEquals("a,=;\t%z",
+ StringUtils.urlDecode("a%2C%3D%3B%09%25z", ";=,\t%"));
+ }
}