Merge branch 'features/sequenceFeatureRefactor' into develop
[jalview.git] / test / jalview / util / StringUtilsTest.java
index eba2da4..6930e40 100644 (file)
@@ -1,5 +1,7 @@
 package jalview.util;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.Arrays;
@@ -53,4 +55,55 @@ public class StringUtilsTest
     // out of range deletion is ignore
     assertTrue(Arrays.equals(c1, StringUtils.deleteChars(c1, 3, 4)));
   }
+
+  @Test
+  public void testGetLastToken()
+  {
+    assertNull(StringUtils.getLastToken(null, null));
+    assertNull(StringUtils.getLastToken(null, "/"));
+    assertEquals("a", StringUtils.getLastToken("a", null));
+
+    assertEquals("abc", StringUtils.getLastToken("abc", "/"));
+    assertEquals("c", StringUtils.getLastToken("abc", "b"));
+    assertEquals("file1.dat", StringUtils.getLastToken(
+            "file://localhost:8080/data/examples/file1.dat", "/"));
+  }
+
+  @Test
+  public void testSeparatorListToArray()
+  {
+    String[] result = StringUtils.separatorListToArray(
+            "foo=',',min='foo',max='1,2,3',fa=','", ",");
+    assertEquals("[foo=',', min='foo', max='1,2,3', fa=',']",
+            Arrays.toString(result));
+    /*
+     * Comma nested in '' is not treated as delimiter; tokens are not trimmed
+     */
+    result = StringUtils.separatorListToArray("minsize='2', sep=','", ",");
+    assertEquals("[minsize='2',  sep=',']", Arrays.toString(result));
+    
+    /*
+     * 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", "|")));
+  }
+
+  @Test
+  public void testArrayToSeparatorList()
+  {
+    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" }, "*"));
+    // delimiter within token is not (yet) escaped
+    assertEquals("a*b*c*cde", StringUtils.arrayToSeparatorList(new String[]
+    { "a", "b*c", "cde" }, "*"));
+  }
 }