1   package serp.util;
2   
3   import junit.framework.*;
4   import junit.textui.*;
5   
6   /**
7    * Tests the {@link Strings} type.
8    *
9    * @author Abe White
10   */
11  public class TestStrings extends TestCase {
12      public TestStrings(String test) {
13          super(test);
14      }
15  
16      /**
17       * Test {@link Strings#split}.
18       */
19      public void testSplit() {
20          String str = "boo:and:foo";
21  
22          assertEquals(new String[] { "boo", "and:foo" },
23              Strings.split(str, ":", 2));
24          assertEquals(new String[] { "boo:and:foo" }, 
25              Strings.split(str, ":", 1));
26          assertEquals(new String[] { "boo", "and", "foo" },
27              Strings.split(str, ":", 0));
28          assertEquals(new String[] { "boo", "and", "foo" },
29              Strings.split(str, ":", -2));
30          assertEquals(new String[] { "b", "", ":and:f", "", "" },
31              Strings.split(str, "o", 5));
32          assertEquals(new String[] { "b", "", ":and:f", "o" },
33              Strings.split(str, "o", 4));
34          assertEquals(new String[] { "b", "", ":and:f", "", "" },
35              Strings.split(str, "o", -2));
36          assertEquals(new String[] { "b", "", ":and:f" },
37              Strings.split(str, "o", 0));
38          assertEquals(new String[] { "", "b", "", ":and:f" },
39              Strings.split("o" + str, "o", 0));
40      }
41  
42      /**
43       * Test {@link Strings#classForName}.
44       */
45      public void testClassForName() {
46          // test primitives
47          assertEquals(boolean.class, Strings.toClass("boolean", null));
48          assertEquals(byte.class, Strings.toClass("byte", null));
49          assertEquals(char.class, Strings.toClass("char", null));
50          assertEquals(double.class, Strings.toClass("double", null));
51          assertEquals(float.class, Strings.toClass("float", null));
52          assertEquals(int.class, Strings.toClass("int", null));
53          assertEquals(long.class, Strings.toClass("long", null));
54          assertEquals(short.class, Strings.toClass("short", null));
55          assertEquals(void.class, Strings.toClass("void", null));
56  
57          // test objects
58          assertEquals(String.class, Strings.toClass(String.class.getName(), 
59              null));
60  
61          // test arrays
62          assertEquals(boolean[].class, Strings.toClass("[Z", null));
63          assertEquals(byte[].class, Strings.toClass("[B", null));
64          assertEquals(char[].class, Strings.toClass("[C", null));
65          assertEquals(double[].class, Strings.toClass("[D", null));
66          assertEquals(float[].class, Strings.toClass("[F", null));
67          assertEquals(int[].class, Strings.toClass("[I", null));
68          assertEquals(long[].class, Strings.toClass("[J", null));
69          assertEquals(short[].class, Strings.toClass("[S", null));
70          assertEquals(String[].class,
71              Strings.toClass(String[].class.getName(), null));
72          assertEquals(boolean[][].class, Strings.toClass("[[Z", null));
73          assertEquals(String[][].class,
74              Strings.toClass(String[][].class.getName(), null));
75  
76          assertEquals(boolean[].class, Strings.toClass("boolean[]", null));
77          assertEquals(byte[].class, Strings.toClass("byte[]", null));
78          assertEquals(char[].class, Strings.toClass("char[]", null));
79          assertEquals(double[].class, Strings.toClass("double[]", null));
80          assertEquals(float[].class, Strings.toClass("float[]", null));
81          assertEquals(int[].class, Strings.toClass("int[]", null));
82          assertEquals(long[].class, Strings.toClass("long[]", null));
83          assertEquals(short[].class, Strings.toClass("short[]", null));
84          assertEquals(String[].class, Strings.toClass("java.lang.String[]", 
85              null));
86  
87          try {
88              Strings.toClass("[V", null);
89              fail("Allowed invalid class name");
90          } catch (RuntimeException re) {
91          }
92  
93          try {
94              Strings.toClass("java.lang.Foo", null);
95              fail("Allowed invalid class name");
96          } catch (RuntimeException re) {
97          }
98      }
99  
100     private void assertEquals(String[] arr1, String[] arr2) {
101         assertEquals(arr1.length, arr2.length);
102 
103         for (int i = 0; i < arr1.length; i++)
104             assertEquals(arr1[i], arr2[i]);
105     }
106 
107     public static Test suite() {
108         return new TestSuite(TestStrings.class);
109     }
110 
111     public static void main(String[] args) {
112         TestRunner.run(suite());
113     }
114 }