X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FStringUtilsTest.java;h=22324fc4983464909a68485a3d799e935045b567;hb=404d5b51a7a7781ad6924df6a7ce63c754370f16;hp=084219ad661026893a57e9597a75e63fe0c321a8;hpb=705d1c84c9a03bb0378593e4d8d8a90c8a11f831;p=jalview.git diff --git a/test/jalview/util/StringUtilsTest.java b/test/jalview/util/StringUtilsTest.java index 084219a..22324fc 100644 --- a/test/jalview/util/StringUtilsTest.java +++ b/test/jalview/util/StringUtilsTest.java @@ -67,20 +67,23 @@ public class StringUtilsTest 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))); @@ -116,8 +119,8 @@ public class StringUtilsTest * 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" }) @@ -126,32 +129,33 @@ public class StringUtilsTest 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" }) public void testListToDelimitedString() { assertEquals("", StringUtils.listToDelimitedString(null, ";")); - List list = new ArrayList(); + List list = new ArrayList<>(); assertEquals("", StringUtils.listToDelimitedString(list, ";")); list.add("now"); 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"); @@ -199,7 +203,8 @@ public class StringUtilsTest 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")); @@ -234,20 +239,86 @@ public class StringUtilsTest { assertNull(StringUtils.stripHtmlTags(null)); assertEquals("", StringUtils.stripHtmlTags("")); - assertEquals( - "label", - StringUtils - .stripHtmlTags("label")); + assertEquals("label", + StringUtils.stripHtmlTags( + "label")); // if no "" tag, < and > get html-encoded (not sure why) assertEquals("<a href=\"something\">label</href>", - StringUtils.stripHtmlTags("label")); + StringUtils + .stripHtmlTags("label")); // gets removed but not (is this intentional?) - assertEquals("

hello", - StringUtils.stripHtmlTags("

hello")); + assertEquals("

hello", StringUtils + .stripHtmlTags("

hello")); 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%")); + } }