--- /dev/null
+package jalview.bin;
+
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+import org.testng.annotations.Test;
+
+public class ArgsParserTest
+{
+ @Test(groups = "Functional")
+ public void testGetValue()
+ {
+ ArgsParser ap = new ArgsParser(new String[] { "-name", "Henry", "-job",
+ "Tester" });
+ assertEquals(4, ap.getSize());
+ assertNull(ap.getValue("rubbish"));
+ assertEquals("Tester", ap.getValue("job"));
+ // call to getValue removes the argument and its value
+ assertEquals(2, ap.getSize());
+ assertNull(ap.getValue("job"));
+ assertFalse(ap.contains("job"));
+ assertFalse(ap.contains("Tester"));
+
+ assertEquals("Henry", ap.getValue("name"));
+ assertEquals(0, ap.getSize());
+ assertNull(ap.getValue("name"));
+ }
+
+ @Test(groups = "Functional")
+ public void testGetValue_decoded()
+ {
+ ArgsParser ap = new ArgsParser(new String[] { "-name%241", "Henry",
+ "-job", "Test%203%2a" });
+ // parameter value is decoded
+ assertEquals("Test 3*", ap.getValue("job", true));
+ // parameter name is not decoded
+ assertNull(ap.getValue("name$1", true));
+ assertEquals("Henry", ap.getValue("name%241", true));
+ }
+
+ @Test(groups = "Functional")
+ public void testNextValue()
+ {
+ ArgsParser ap = new ArgsParser(new String[] { "-name", "Henry", "-job",
+ "Tester" });
+ assertEquals("name", ap.nextValue());
+ assertEquals("Henry", ap.nextValue());
+ assertEquals("job", ap.nextValue());
+ assertEquals("Tester", ap.nextValue());
+ }
+
+ @Test(groups = "Functional")
+ public void testContains()
+ {
+ ArgsParser ap = new ArgsParser(new String[] { "-name", "Henry", "-job",
+ "Tester" });
+ assertFalse(ap.contains("Susan"));
+ assertFalse(ap.contains("-name"));
+ assertTrue(ap.contains("name"));
+ // testing for contains removes the argument
+ assertFalse(ap.contains("name"));
+ }
+}