merge
[jalview.git] / test / jalview / util / StringUtilsTest.java
1 package jalview.util;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertNull;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import java.util.Arrays;
8
9 import org.testng.annotations.Test;
10
11 public class StringUtilsTest
12 {
13
14   @Test(groups ={ "Functional" })
15   public void testInsertCharAt()
16   {
17     char[] c1 = "ABC".toCharArray();
18     char[] expected = new char[]
19     { 'A', 'B', 'C', 'w', 'w' };
20     assertTrue(Arrays.equals(expected,
21             StringUtils.insertCharAt(c1, 3, 2, 'w')));
22     expected = new char[]
23     { 'A', 'B', 'C', 'w', 'w' };
24     assertTrue(Arrays.equals(expected,
25             StringUtils.insertCharAt(c1, 4, 2, 'w')));
26     assertTrue(Arrays.equals(expected,
27             StringUtils.insertCharAt(c1, 5, 2, 'w')));
28     assertTrue(Arrays.equals(expected,
29             StringUtils.insertCharAt(c1, 6, 2, 'w')));
30     assertTrue(Arrays.equals(expected,
31             StringUtils.insertCharAt(c1, 7, 2, 'w')));
32   }
33
34   @Test(groups ={ "Functional" })
35   public void testDeleteChars()
36   {
37     char[] c1 = "ABC".toCharArray();
38
39     // delete second position
40     assertTrue(Arrays.equals(new char[]
41     { 'A', 'C' }, StringUtils.deleteChars(c1, 1, 2)));
42
43     // delete positions 1 and 2
44     assertTrue(Arrays.equals(new char[]
45     { 'C' }, StringUtils.deleteChars(c1, 0, 2)));
46
47     // delete positions 1-3
48     assertTrue(Arrays.equals(new char[]
49     {}, StringUtils.deleteChars(c1, 0, 3)));
50
51     // delete position 3
52     assertTrue(Arrays.equals(new char[]
53     { 'A', 'B' }, StringUtils.deleteChars(c1, 2, 3)));
54
55     // out of range deletion is ignore
56     assertTrue(Arrays.equals(c1, StringUtils.deleteChars(c1, 3, 4)));
57   }
58
59   @Test(groups ={ "Functional" })
60   public void testGetLastToken()
61   {
62     assertNull(StringUtils.getLastToken(null, null));
63     assertNull(StringUtils.getLastToken(null, "/"));
64     assertEquals("a", StringUtils.getLastToken("a", null));
65
66     assertEquals("abc", StringUtils.getLastToken("abc", "/"));
67     assertEquals("c", StringUtils.getLastToken("abc", "b"));
68     assertEquals("file1.dat", StringUtils.getLastToken(
69             "file://localhost:8080/data/examples/file1.dat", "/"));
70   }
71
72   @Test(groups ={ "Functional" })
73   public void testSeparatorListToArray()
74   {
75     String[] result = StringUtils.separatorListToArray(
76             "foo=',',min='foo',max='1,2,3',fa=','", ",");
77     assertEquals("[foo=',', min='foo', max='1,2,3', fa=',']",
78             Arrays.toString(result));
79     /*
80      * Comma nested in '' is not treated as delimiter; tokens are not trimmed
81      */
82     result = StringUtils.separatorListToArray("minsize='2', sep=','", ",");
83     assertEquals("[minsize='2',  sep=',']", Arrays.toString(result));
84     
85     /*
86      * String delimited by | containing a quoted | (should not be treated as
87      * delimiter)
88      */
89     assertEquals("[abc='|'d, ef, g]", Arrays.toString(StringUtils
90             .separatorListToArray("abc='|'d|ef|g", "|")));
91   }
92
93   @Test(groups ={ "Functional" })
94   public void testArrayToSeparatorList()
95   {
96     assertEquals("*", StringUtils.arrayToSeparatorList(null, "*"));
97     assertEquals("*", StringUtils.arrayToSeparatorList(new String[]
98     {}, "*"));
99     assertEquals("a*bc*cde", StringUtils.arrayToSeparatorList(new String[]
100     { "a", "bc", "cde" }, "*"));
101     assertEquals("a*cde", StringUtils.arrayToSeparatorList(new String[]
102     { "a", null, "cde" }, "*"));
103     assertEquals("a**cde", StringUtils.arrayToSeparatorList(new String[]
104     { "a", "", "cde" }, "*"));
105     // delimiter within token is not (yet) escaped
106     assertEquals("a*b*c*cde", StringUtils.arrayToSeparatorList(new String[]
107     { "a", "b*c", "cde" }, "*"));
108   }
109 }