1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.util;
17
18 import java.lang.reflect.Method;
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.Collection;
22 import java.util.List;
23
24 import junit.framework.TestCase;
25
26 import org.seasar.cubby.action.Path;
27 import org.seasar.cubby.exception.ActionRuntimeException;
28 import org.seasar.framework.util.ClassUtil;
29
30 public class CubbyUtilsTest extends TestCase {
31
32 public void testGetObjectSize() {
33
34 assertEquals(0, CubbyUtils.getObjectSize(null));
35 assertEquals(1, CubbyUtils.getObjectSize(""));
36 assertEquals(0, CubbyUtils.getObjectSize(new Object[] {}));
37 assertEquals(3, CubbyUtils.getObjectSize(new Object[] { 1, 2, 3 }));
38 assertEquals(3, CubbyUtils.getObjectSize(new Object[] { null, 2, 3 }));
39
40
41 assertEquals(0, CubbyUtils.getObjectSize(toCollection(new Object[] {})));
42 assertEquals(3, CubbyUtils.getObjectSize(toCollection(new Object[] { 1,
43 2, 3 })));
44 assertEquals(3, CubbyUtils.getObjectSize(toCollection(new Object[] {
45 null, 2, 3 })));
46
47 }
48
49 @SuppressWarnings("unchecked")
50 private Collection toCollection(Object[] objects) {
51 List<Object> list = new ArrayList<Object>();
52 for (Object o : objects) {
53 list.add(o);
54 }
55 return list;
56 }
57
58 public void testGetActionPath() {
59 assertEquals("/hoge/m1", CubbyUtils.getActionPath(Hoge1Action.class,
60 ClassUtil.getMethod(Hoge1Action.class, "m1", null)));
61 assertEquals("/hoge/m/m2", CubbyUtils.getActionPath(Hoge1Action.class,
62 ClassUtil.getMethod(Hoge1Action.class, "m2", null)));
63 assertEquals("/hoge/", CubbyUtils.getActionPath(Hoge1Action.class,
64 ClassUtil.getMethod(Hoge1Action.class, "index", null)));
65 assertEquals("/hoge/index2", CubbyUtils.getActionPath(
66 Hoge1Action.class, ClassUtil.getMethod(Hoge1Action.class,
67 "index2", null)));
68 assertEquals("/hoge2/m1", CubbyUtils.getActionPath(Hoge2Action.class,
69 ClassUtil.getMethod(Hoge2Action.class, "m1", null)));
70 assertEquals("/hoge/m2", CubbyUtils.getActionPath(Hoge2Action.class,
71 ClassUtil.getMethod(Hoge2Action.class, "m2", null)));
72 assertEquals("/", CubbyUtils.getActionPath(MockAction.class, ClassUtil
73 .getMethod(MockAction.class, "index", null)));
74 assertEquals("/dummy1", CubbyUtils.getActionPath(MockAction.class,
75 ClassUtil.getMethod(MockAction.class, "dummy1", null)));
76 assertEquals("/dummy2", CubbyUtils.getActionPath(MockAction.class,
77 ClassUtil.getMethod(MockAction.class, "dummy2", null)));
78 assertEquals("/todo/lists", CubbyUtils.getActionPath(MockAction.class,
79 ClassUtil.getMethod(MockAction.class, "todolist", null)));
80 assertEquals("/tasklists", CubbyUtils.getActionPath(MockAction.class,
81 ClassUtil.getMethod(MockAction.class, "tasklist", null)));
82 }
83
84 public void testGetActionClassName() {
85 assertEquals("hoge", CubbyUtils.getActionDirectory(Hoge1Action.class));
86 assertEquals("hoge2", CubbyUtils.getActionDirectory(Hoge2Action.class));
87 }
88
89 public void testReplaceFirst() {
90 assertNull(CubbyUtils.replaceFirst(null, "", ""));
91 assertEquals("abaa", CubbyUtils.replaceFirst("abaa", null, null));
92 assertEquals("abaa", CubbyUtils.replaceFirst("abaa", "a", null));
93 assertEquals("baa", CubbyUtils.replaceFirst("abaa", "a", ""));
94 assertEquals("zbaa", CubbyUtils.replaceFirst("abaa", "a", "z"));
95 assertEquals("xyzaab", CubbyUtils.replaceFirst("abaab", "ab", "xyz"));
96 assertNull(CubbyUtils.replaceFirst(null, "", ""));
97 assertEquals("3abaa", CubbyUtils.replaceFirst("3abaa", null, null));
98 assertEquals("3abaa", CubbyUtils.replaceFirst("3abaa", "a", null));
99 assertEquals("3baa", CubbyUtils.replaceFirst("3abaa", "a", ""));
100 assertEquals("3zbaa", CubbyUtils.replaceFirst("3abaa", "a", "z"));
101 assertEquals("3xyzaab", CubbyUtils.replaceFirst("3abaab", "ab", "xyz"));
102 }
103
104 public void testSplit2() {
105 assertNull(CubbyUtils.split2(null, '_'));
106 assertTrue(Arrays.deepEquals(new String[] { "" }, CubbyUtils.split2("",
107 '_')));
108 assertTrue(Arrays.deepEquals(new String[] { "ab", "" }, CubbyUtils
109 .split2("ab_", '_')));
110 assertTrue(Arrays.deepEquals(new String[] { "ab_cd_de_" }, CubbyUtils
111 .split2("ab_cd_de_", ',')));
112 assertTrue(Arrays.deepEquals(new String[] { "ab", "cd_de_" },
113 CubbyUtils.split2("ab_cd_de_", '_')));
114 }
115
116 public void testGetPriority() throws Exception {
117 Method method = TestGetPriprity.class.getMethod("m1", new Class[0]);
118 assertEquals(Integer.MAX_VALUE, CubbyUtils.getPriority(method));
119
120 method = TestGetPriprity.class.getMethod("m2", new Class[0]);
121 assertEquals(Integer.MAX_VALUE, CubbyUtils.getPriority(method));
122
123 method = TestGetPriprity.class.getMethod("m3", new Class[0]);
124 assertEquals(0, CubbyUtils.getPriority(method));
125 }
126
127 static class TestGetPriprity {
128 public void m1() {
129 }
130
131 @Path
132 public void m2() {
133
134 }
135
136 @Path(value = "", priority = 0)
137 public void m3() {
138
139 }
140 }
141
142 public void testGetFormBean1() throws Exception {
143 MockFormAction action = new MockFormAction();
144 Method method = ClassUtil.getMethod(action.getClass(), "normal",
145 new Class[0]);
146 Object actual = CubbyUtils
147 .getFormBean(action, MockAction.class, method);
148 assertSame(action, actual);
149 }
150
151 public void testGetFormBean2() throws Exception {
152 MockFormAction action = new MockFormAction();
153 Method method = ClassUtil.getMethod(action.getClass(), "legalForm",
154 new Class[0]);
155 Object actual = CubbyUtils
156 .getFormBean(action, MockAction.class, method);
157 assertSame(action.form, actual);
158 }
159
160 public void testGetFormBean3() throws Exception {
161 MockFormAction action = new MockFormAction();
162 Method method = ClassUtil.getMethod(action.getClass(), "illegalForm",
163 new Class[0]);
164 try {
165 CubbyUtils.getFormBean(action, MockAction.class, method);
166 fail();
167 } catch (ActionRuntimeException e) {
168
169 e.printStackTrace();
170 }
171 }
172
173 }