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