1   /*
2    * Copyright 2004-2008 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.seasar.cubby.util;
17  
18  import java.util.ArrayList;
19  import java.util.Arrays;
20  import java.util.Collection;
21  import java.util.List;
22  
23  import junit.framework.TestCase;
24  
25  import org.seasar.framework.util.ClassUtil;
26  
27  public class CubbyUtilsTest extends TestCase {
28  
29  	public void testGetObjectSize() {
30  		// array
31  		assertEquals(0, CubbyUtils.getObjectSize(null));
32  		assertEquals(1, CubbyUtils.getObjectSize(""));
33  		assertEquals(0, CubbyUtils.getObjectSize(new Object[] {}));
34  		assertEquals(3, CubbyUtils.getObjectSize(new Object[] {1,2,3}));
35  		assertEquals(3, CubbyUtils.getObjectSize(new Object[] {null,2,3}));
36  
37  		// collection
38  		assertEquals(0, CubbyUtils.getObjectSize(toCollection(new Object[] {})));
39  		assertEquals(3, CubbyUtils.getObjectSize(toCollection(new Object[] {1,2,3})));
40  		assertEquals(3, CubbyUtils.getObjectSize(toCollection(new Object[] {null,2,3})));
41  
42  	}
43  
44  	@SuppressWarnings("unchecked")
45  	private Collection toCollection(Object[] objects) {
46  		List<Object> list = new ArrayList<Object>();
47  		for (Object o : objects) {
48  			list.add(o);
49  		}
50  		return list;
51  	}
52  
53  	public void testGetActionPath() {
54  		assertEquals("/hoge/m1", CubbyUtils.getActionPath(Hoge1Action.class, ClassUtil.getMethod(Hoge1Action.class, "m1", null)));
55  		assertEquals("/hoge/m/m2", CubbyUtils.getActionPath(Hoge1Action.class, ClassUtil.getMethod(Hoge1Action.class, "m2", null)));
56  		assertEquals("/hoge/", CubbyUtils.getActionPath(Hoge1Action.class, ClassUtil.getMethod(Hoge1Action.class, "index", null)));
57  		assertEquals("/hoge/index2", CubbyUtils.getActionPath(Hoge1Action.class, ClassUtil.getMethod(Hoge1Action.class, "index2", null)));
58  		assertEquals("/hoge2/m1", CubbyUtils.getActionPath(Hoge2Action.class, ClassUtil.getMethod(Hoge2Action.class, "m1", null)));
59  		assertEquals("/hoge/m2", CubbyUtils.getActionPath(Hoge2Action.class, ClassUtil.getMethod(Hoge2Action.class, "m2", null)));
60  		assertEquals("/", CubbyUtils.getActionPath(MockAction.class, ClassUtil.getMethod(MockAction.class, "index", null)));
61  		assertEquals("/dummy1", CubbyUtils.getActionPath(MockAction.class, ClassUtil.getMethod(MockAction.class, "dummy1", null)));
62  		assertEquals("/dummy2", CubbyUtils.getActionPath(MockAction.class, ClassUtil.getMethod(MockAction.class, "dummy2", null)));
63  		assertEquals("/todo/lists", CubbyUtils.getActionPath(MockAction.class, ClassUtil.getMethod(MockAction.class, "todolist", null)));
64  		assertEquals("/tasklists", CubbyUtils.getActionPath(MockAction.class, ClassUtil.getMethod(MockAction.class, "tasklist", null)));
65  	}
66  
67  	public void testGetActionClassName() {
68  		assertEquals("hoge", CubbyUtils.getActionDirectory(Hoge1Action.class));
69  		assertEquals("hoge2", CubbyUtils.getActionDirectory(Hoge2Action.class));
70  	}
71  
72  	public void testReplaceFirst() {
73  		assertNull(CubbyUtils.replaceFirst(null, "", ""));
74  		assertEquals("abaa", CubbyUtils.replaceFirst("abaa", null, null));
75  		assertEquals("abaa", CubbyUtils.replaceFirst("abaa", "a", null));
76  		assertEquals("baa", CubbyUtils.replaceFirst("abaa", "a", ""));
77  		assertEquals("zbaa", CubbyUtils.replaceFirst("abaa", "a", "z"));
78  		assertEquals("xyzaab", CubbyUtils.replaceFirst("abaab", "ab", "xyz"));
79  		assertNull(CubbyUtils.replaceFirst(null, "", ""));
80  		assertEquals("3abaa", CubbyUtils.replaceFirst("3abaa", null, null));
81  		assertEquals("3abaa", CubbyUtils.replaceFirst("3abaa", "a", null));
82  		assertEquals("3baa", CubbyUtils.replaceFirst("3abaa", "a", ""));
83  		assertEquals("3zbaa", CubbyUtils.replaceFirst("3abaa", "a", "z"));
84  		assertEquals("3xyzaab", CubbyUtils.replaceFirst("3abaab", "ab", "xyz"));
85  	}
86  
87  	public void testSplit2() {
88  		assertNull(CubbyUtils.split2(null, '_'));
89  		assertTrue(Arrays.deepEquals(new String[] { "" }, CubbyUtils.split2("", '_')));
90  		assertTrue(Arrays.deepEquals(new String[] { "ab", "" }, CubbyUtils.split2("ab_", '_')));
91  		assertTrue(Arrays.deepEquals(new String[] { "ab_cd_de_" }, CubbyUtils.split2("ab_cd_de_", ',')));
92  		assertTrue(Arrays.deepEquals(new String[] { "ab", "cd_de_" }, CubbyUtils.split2("ab_cd_de_", '_')));
93  	}
94  
95  }