001 package serp.util; 002 003 import junit.framework.*; 004 import junit.textui.*; 005 006 /** 007 * Tests the {@link Strings} type. 008 * 009 * @author Abe White 010 */ 011 public class TestStrings extends TestCase { 012 public TestStrings(String test) { 013 super(test); 014 } 015 016 /** 017 * Test {@link Strings#split}. 018 */ 019 public void testSplit() { 020 String str = "boo:and:foo"; 021 022 assertEquals(new String[] { "boo", "and:foo" }, 023 Strings.split(str, ":", 2)); 024 assertEquals(new String[] { "boo:and:foo" }, 025 Strings.split(str, ":", 1)); 026 assertEquals(new String[] { "boo", "and", "foo" }, 027 Strings.split(str, ":", 0)); 028 assertEquals(new String[] { "boo", "and", "foo" }, 029 Strings.split(str, ":", -2)); 030 assertEquals(new String[] { "b", "", ":and:f", "", "" }, 031 Strings.split(str, "o", 5)); 032 assertEquals(new String[] { "b", "", ":and:f", "o" }, 033 Strings.split(str, "o", 4)); 034 assertEquals(new String[] { "b", "", ":and:f", "", "" }, 035 Strings.split(str, "o", -2)); 036 assertEquals(new String[] { "b", "", ":and:f" }, 037 Strings.split(str, "o", 0)); 038 assertEquals(new String[] { "", "b", "", ":and:f" }, 039 Strings.split("o" + str, "o", 0)); 040 } 041 042 /** 043 * Test {@link Strings#classForName}. 044 */ 045 public void testClassForName() { 046 // test primitives 047 assertEquals(boolean.class, Strings.toClass("boolean", null)); 048 assertEquals(byte.class, Strings.toClass("byte", null)); 049 assertEquals(char.class, Strings.toClass("char", null)); 050 assertEquals(double.class, Strings.toClass("double", null)); 051 assertEquals(float.class, Strings.toClass("float", null)); 052 assertEquals(int.class, Strings.toClass("int", null)); 053 assertEquals(long.class, Strings.toClass("long", null)); 054 assertEquals(short.class, Strings.toClass("short", null)); 055 assertEquals(void.class, Strings.toClass("void", null)); 056 057 // test objects 058 assertEquals(String.class, Strings.toClass(String.class.getName(), 059 null)); 060 061 // test arrays 062 assertEquals(boolean[].class, Strings.toClass("[Z", null)); 063 assertEquals(byte[].class, Strings.toClass("[B", null)); 064 assertEquals(char[].class, Strings.toClass("[C", null)); 065 assertEquals(double[].class, Strings.toClass("[D", null)); 066 assertEquals(float[].class, Strings.toClass("[F", null)); 067 assertEquals(int[].class, Strings.toClass("[I", null)); 068 assertEquals(long[].class, Strings.toClass("[J", null)); 069 assertEquals(short[].class, Strings.toClass("[S", null)); 070 assertEquals(String[].class, 071 Strings.toClass(String[].class.getName(), null)); 072 assertEquals(boolean[][].class, Strings.toClass("[[Z", null)); 073 assertEquals(String[][].class, 074 Strings.toClass(String[][].class.getName(), null)); 075 076 assertEquals(boolean[].class, Strings.toClass("boolean[]", null)); 077 assertEquals(byte[].class, Strings.toClass("byte[]", null)); 078 assertEquals(char[].class, Strings.toClass("char[]", null)); 079 assertEquals(double[].class, Strings.toClass("double[]", null)); 080 assertEquals(float[].class, Strings.toClass("float[]", null)); 081 assertEquals(int[].class, Strings.toClass("int[]", null)); 082 assertEquals(long[].class, Strings.toClass("long[]", null)); 083 assertEquals(short[].class, Strings.toClass("short[]", null)); 084 assertEquals(String[].class, Strings.toClass("java.lang.String[]", 085 null)); 086 087 try { 088 Strings.toClass("[V", null); 089 fail("Allowed invalid class name"); 090 } catch (RuntimeException re) { 091 } 092 093 try { 094 Strings.toClass("java.lang.Foo", null); 095 fail("Allowed invalid class name"); 096 } catch (RuntimeException re) { 097 } 098 } 099 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 }