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