JAL-653 JAL-1968 FeaturesFile now handles Jalview or GFF2 or GFF3
[jalview.git] / test / jalview / util / StringUtilsTest.java
index 2342afe..0b776d1 100644 (file)
@@ -24,7 +24,10 @@ import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertNull;
 import static org.testng.AssertJUnit.assertTrue;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 import org.testng.annotations.Test;
 
@@ -128,4 +131,79 @@ public class StringUtilsTest
     assertEquals("a*b*c*cde", StringUtils.arrayToSeparatorList(new String[]
     { "a", "b*c", "cde" }, "*"));
   }
+
+  /**
+   * Test the method that parses lines like <br>
+   * ID=2345;Name=Something;
+   */
+  @Test(groups = { "Functional" })
+  public void testParseNameValuePairs()
+  {
+    char[] separators = new char[] { ' ' };
+    assertTrue(StringUtils.parseNameValuePairs(null, ";", separators)
+            .isEmpty());
+    assertTrue(StringUtils.parseNameValuePairs("", ";", separators)
+            .isEmpty());
+    assertTrue(StringUtils.parseNameValuePairs("hello=world", ";",
+            separators).isEmpty());
+
+    Map<String, List<String>> map = StringUtils.parseNameValuePairs(
+            "hello world", ";", separators);
+    assertEquals(1, map.size());
+    assertEquals(1, map.get("hello").size());
+    assertEquals("world", map.get("hello").get(0));
+
+    separators = new char[] { ' ', '=' };
+    map = StringUtils
+            .parseNameValuePairs(
+                    "Method= manual curation ;nothing; Notes F2=S ; Notes=Metal; Type=",
+                    ";", separators);
+
+    // Type is ignored as no value was supplied
+    assertEquals(2, map.size());
+
+    // equals separator used ahead of space separator:
+    assertEquals(1, map.get("Method").size());
+    assertEquals("manual curation", map.get("Method").get(0)); // trimmed
+
+    assertEquals(2, map.get("Notes").size());
+    // space separator used ahead of equals separator
+    assertEquals("F2=S", map.get("Notes").get(0));
+    assertEquals("Metal", map.get("Notes").get(1));
+  }
+
+  @Test(groups = { "Functional" })
+  public void testListToDelimitedString()
+  {
+    assertEquals("", StringUtils.listToDelimitedString(null, ";"));
+    List<String> list = new ArrayList<String>();
+    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, " ; "));
+    list.add("the");
+    list.add("winter");
+    list.add("of");
+    list.add("our");
+    list.add("discontent");
+    assertEquals("now is the winter of our discontent",
+            StringUtils.listToDelimitedString(list, " "));
+  }
+
+  @Test(groups = { "Functional" })
+  public void testParseInt()
+  {
+    assertEquals(0, StringUtils.parseInt(null));
+    assertEquals(0, StringUtils.parseInt(""));
+    assertEquals(0, StringUtils.parseInt("x"));
+    assertEquals(0, StringUtils.parseInt("1.2"));
+    assertEquals(33, StringUtils.parseInt("33"));
+    assertEquals(33, StringUtils.parseInt("+33"));
+    assertEquals(-123, StringUtils.parseInt("-123"));
+    // too big for an int:
+    assertEquals(0,
+            StringUtils.parseInt(String.valueOf(Integer.MAX_VALUE) + "1"));
+  }
 }