package jalview.util; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertTrue; import java.util.Arrays; import org.testng.annotations.Test; public class StringUtilsTest { @Test(groups ={ "Functional" }) public void testInsertCharAt() { char[] c1 = "ABC".toCharArray(); char[] expected = new char[] { 'A', 'B', 'C', 'w', 'w' }; assertTrue(Arrays.equals(expected, StringUtils.insertCharAt(c1, 3, 2, 'w'))); expected = new char[] { 'A', 'B', 'C', 'w', 'w' }; assertTrue(Arrays.equals(expected, StringUtils.insertCharAt(c1, 4, 2, 'w'))); assertTrue(Arrays.equals(expected, StringUtils.insertCharAt(c1, 5, 2, 'w'))); assertTrue(Arrays.equals(expected, StringUtils.insertCharAt(c1, 6, 2, 'w'))); assertTrue(Arrays.equals(expected, StringUtils.insertCharAt(c1, 7, 2, 'w'))); } @Test(groups ={ "Functional" }) public void testDeleteChars() { char[] c1 = "ABC".toCharArray(); // delete second position 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))); // 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))); // out of range deletion is ignore assertTrue(Arrays.equals(c1, StringUtils.deleteChars(c1, 3, 4))); } @Test(groups ={ "Functional" }) 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(groups ={ "Functional" }) 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(groups ={ "Functional" }) 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" }, "*")); } }