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