1   package org.seasar.cubby.controller.impl;
2   
3   import java.util.Arrays;
4   import java.util.Calendar;
5   import java.util.Date;
6   import java.util.List;
7   
8   import org.seasar.cubby.controller.FormWrapper;
9   import org.seasar.cubby.controller.FormWrapperFactory;
10  import org.seasar.extension.unit.S2TestCase;
11  
12  public class FormWrapperFactoryImplTest extends S2TestCase {
13  
14  	public FormWrapperFactory formWrapperFactory;
15  
16  	@Override
17  	protected void setUp() throws Exception {
18  		super.setUp();
19  		include(getClass().getName().replace('.', '/') + ".dicon");
20  	}
21  
22  	public void testBeanToMap() {
23  		Calendar cal = Calendar.getInstance();
24  		cal.set(2006, 0, 1);
25  
26  		TestBean bean = new TestBean();
27  		bean.setDate(cal.getTime());
28  		bean.setNum1(5);
29  		bean.setNum2(new Integer[] { 2, 3, 4 });
30  		bean.setNum3(Arrays.asList(new String[] { "abc", "def" }));
31  
32  		FormWrapper formWrapper = formWrapperFactory.create(bean);
33  		String[] date = formWrapper.getValues("date");
34  		assertEquals(1, date.length);
35  		assertEquals("2006-01-01", date[0]);
36  
37  		String[] num1 = formWrapper.getValues("num1");
38  		assertEquals(1, num1.length);
39  		assertEquals("5", num1[0]);
40  
41  		String[] num2 = formWrapper.getValues("num2");
42  		assertEquals(3, num2.length);
43  		assertEquals("2", num2[0]);
44  		assertEquals("3", num2[1]);
45  		assertEquals("4", num2[2]);
46  
47  		String[] num3 = formWrapper.getValues("num3");
48  		assertEquals(2, num3.length);
49  		assertEquals("abc", num3[0]);
50  		assertEquals("def", num3[1]);
51  
52  		String[] noprop = formWrapper.getValues("noprop");
53  		assertNull(noprop);
54  	}
55  
56  	public void testBeanToMap2() {
57  		TestBean bean = new TestBean();
58  		bean.setNum2(new Integer[] { null, null, null });
59  		bean.setNum3(Arrays.asList(new String[] { null, null }));
60  
61  		FormWrapper formWrapper = formWrapperFactory.create(bean);
62  		String[] date = formWrapper.getValues("date");
63  		assertNull(date);
64  
65  		String[] num1 = formWrapper.getValues("num1");
66  		assertNull(num1);
67  
68  		String[] num2 = formWrapper.getValues("num2");
69  		assertEquals(3, num2.length);
70  		assertNull(num2[0]);
71  		assertNull(num2[1]);
72  		assertNull(num2[2]);
73  
74  		String[] num3 = formWrapper.getValues("num3");
75  		assertEquals(2, num3.length);
76  		assertNull(num3[0]);
77  		assertNull(num3[1]);
78  
79  		String[] noprop = formWrapper.getValues("noprop");
80  		assertNull(noprop);
81  	}
82  
83  	public static class TestBean {
84  
85  		Date date;
86  
87  		Integer num1;
88  
89  		Integer[] num2;
90  
91  		List<String> num3;
92  
93  		public Date getDate() {
94  			if (date == null) {
95  				return null;
96  			}
97  			return new Date(date.getTime());
98  		}
99  
100 		public void setDate(Date date) {
101 			if (date == null) {
102 				this.date = null;
103 			} else {
104 				this.date = new Date(date.getTime());
105 			}
106 		}
107 
108 		public Integer getNum1() {
109 			return num1;
110 		}
111 
112 		public void setNum1(Integer num1) {
113 			this.num1 = num1;
114 		}
115 
116 		public Integer[] getNum2() {
117 			return num2 == null ? null : num2.clone();
118 		}
119 
120 		public void setNum2(Integer[] num2) {
121 			this.num2 = num2 == null ? null : num2.clone();
122 		}
123 
124 		public List<String> getNum3() {
125 			return num3;
126 		}
127 
128 		public void setNum3(List<String> num3) {
129 			this.num3 = num3;
130 		}
131 
132 	}
133 
134 }