1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby.tags;
17
18 import java.util.HashMap;
19 import java.util.LinkedHashMap;
20 import java.util.Map;
21
22 import org.jdom.Element;
23 import org.seasar.framework.util.StringUtil;
24
25 public class SelectTagMapTest extends SimpleTagTestCase {
26
27 SelectTag tag;
28 Map<Integer, String> items = new LinkedHashMap<Integer, String>();
29
30 @Override
31 protected void setUp() throws Exception {
32 super.setUp();
33 tag = new SelectTag();
34 setupSimpleTag(tag);
35 setupErrors(context);
36 items.put(1, "name1");
37 items.put(2, "name2");
38 items.put(3, "name3");
39 }
40
41 public void testDoTag1() throws Exception {
42 Map<String, String[]> map = new HashMap<String, String[]>();
43 map.put("stringField", new String[] { "1" });
44 tag.setParent(new MockFormTag(map));
45 tag.setName("stringField");
46 tag.setDynamicAttribute(null, "id", "stringField");
47 tag.setItems(items);
48 tag.doTag();
49
50 Element element = getResultAsElementFromContext();
51 String message = "基本";
52 assertEquals(message, 2, element.getAttributes().size());
53 assertEquals(message, "stringField", element.getAttributeValue("name"));
54 assertEquals(message, "stringField", element.getAttributeValue("id"));
55 assertEquals(message, 4, element.getChildren().size());
56 for (Object o : element.getChildren("option")) {
57 Element child = (Element) o;
58 String value = child.getValue();
59 if (StringUtil.isEmpty(value)) {
60 assertEquals(message, 1, child.getAttributes().size());
61 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
62 } else if ("name1".equals(value)) {
63 assertEquals(message, 2, child.getAttributes().size());
64 assertEquals(message, "1", child.getAttributeValue("value"));
65 assertEquals(message, "selected", child.getAttributeValue("selected"));
66 } else if ("name2".equals(value)) {
67 assertEquals(message, 1, child.getAttributes().size());
68 assertEquals(message, "2", child.getAttributeValue("value"));
69 } else if ("name3".equals(value)) {
70 assertEquals(message, 1, child.getAttributes().size());
71 assertEquals(message, "3", child.getAttributeValue("value"));
72 } else {
73 fail(message);
74 }
75 }
76
77
78
79
80
81
82
83 }
84
85 public void testDoTag2() throws Exception {
86 Map<String, String[]> map = new HashMap<String, String[]>();
87 map.put("integerArrayField", new String[] { "1", "3" });
88 tag.setParent(new MockFormTag(map));
89 tag.setName("integerArrayField");
90 tag.setDynamicAttribute(null, "size", "5");
91 tag.setItems(items);
92 tag.doTag();
93
94 Element element = getResultAsElementFromContext();
95 String message = "selectedの対象が2つ";
96 assertEquals(message, 2, element.getAttributes().size());
97 assertEquals(message, "integerArrayField", element.getAttributeValue("name"));
98 assertEquals(message, "5", element.getAttributeValue("size"));
99 assertEquals(message, 4, element.getChildren().size());
100 for (Object o : element.getChildren("option")) {
101 Element child = (Element) o;
102 String value = child.getValue();
103 if (StringUtil.isEmpty(value)) {
104 assertEquals(message, 1, child.getAttributes().size());
105 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
106 } else if ("name1".equals(value)) {
107 assertEquals(message, 2, child.getAttributes().size());
108 assertEquals(message, "1", child.getAttributeValue("value"));
109 assertEquals(message, "selected", child.getAttributeValue("selected"));
110 } else if ("name2".equals(value)) {
111 assertEquals(message, 1, child.getAttributes().size());
112 assertEquals(message, "2", child.getAttributeValue("value"));
113 } else if ("name3".equals(value)) {
114 assertEquals(message, 2, child.getAttributes().size());
115 assertEquals(message, "3", child.getAttributeValue("value"));
116 assertEquals(message, "selected", child.getAttributeValue("selected"));
117 } else {
118 fail(message);
119 }
120 }
121
122
123
124
125
126
127
128 }
129
130 public void testDoTag4() throws Exception {
131 Map<String, String[]> map = new HashMap<String, String[]>();
132 map.put("stringField", new String[] { "1" });
133 tag.setParent(new MockFormTag(map));
134 tag.setName("stringField");
135 tag.setItems(items);
136 tag.setEmptyOption(false);
137 tag.doTag();
138
139 Element element = getResultAsElementFromContext();
140 String message = "emptyOption=false";
141 assertEquals(message, 1, element.getAttributes().size());
142 assertEquals(message, "stringField", element.getAttributeValue("name"));
143 assertEquals(message, 3, element.getChildren().size());
144 for (Object o : element.getChildren("option")) {
145 Element child = (Element) o;
146 String value = child.getValue();
147 if ("name1".equals(value)) {
148 assertEquals(message, 2, child.getAttributes().size());
149 assertEquals(message, "1", child.getAttributeValue("value"));
150 assertEquals(message, "selected", child.getAttributeValue("selected"));
151 } else if ("name2".equals(value)) {
152 assertEquals(message, 1, child.getAttributes().size());
153 assertEquals(message, "2", child.getAttributeValue("value"));
154 } else if ("name3".equals(value)) {
155 assertEquals(message, 1, child.getAttributes().size());
156 assertEquals(message, "3", child.getAttributeValue("value"));
157 } else {
158 fail(message);
159 }
160 }
161
162
163
164
165
166
167 }
168
169 public void testDoTag5() throws Exception {
170 Map<String, String[]> map = new HashMap<String, String[]>();
171 map.put("stringField", new String[] { "1" });
172 tag.setParent(new MockFormTag(map));
173 tag.setName("stringField");
174 tag.setItems(items);
175 tag.setEmptyOptionLabel("empty label");
176 tag.doTag();
177
178 Element element = getResultAsElementFromContext();
179 String message = "emptyOption=true, emptyOptionLabel=empty label";
180 assertEquals(message, 1, element.getAttributes().size());
181 assertEquals(message, "stringField", element.getAttributeValue("name"));
182 assertEquals(message, 4, element.getChildren().size());
183 for (Object o : element.getChildren("option")) {
184 Element child = (Element) o;
185 String value = child.getValue();
186 if ("empty label".equals(value)) {
187 assertEquals(message, 1, child.getAttributes().size());
188 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
189 } else if ("name1".equals(value)) {
190 assertEquals(message, 2, child.getAttributes().size());
191 assertEquals(message, "1", child.getAttributeValue("value"));
192 assertEquals(message, "selected", child.getAttributeValue("selected"));
193 } else if ("name2".equals(value)) {
194 assertEquals(message, 1, child.getAttributes().size());
195 assertEquals(message, "2", child.getAttributeValue("value"));
196 } else if ("name3".equals(value)) {
197 assertEquals(message, 1, child.getAttributes().size());
198 assertEquals(message, "3", child.getAttributeValue("value"));
199 } else {
200 fail(message);
201 }
202 }
203
204
205
206
207
208
209
210 }
211
212 public void testDoTag11() throws Exception {
213 Map<String, String[]> map = new HashMap<String, String[]>();
214 map.put("stringField", new String[] { "1" });
215 tag.setParent(new MockFormTag(map));
216 tag.setName("stringField");
217 tag.setDynamicAttribute(null, "id", "stringField");
218 tag.setItems(items);
219 tag.setLabelProperty("name");
220 tag.doTag();
221
222 Element element = getResultAsElementFromContext();
223 String message = "labelProperty設定";
224 assertEquals(message, 2, element.getAttributes().size());
225 assertEquals(message, "stringField", element.getAttributeValue("name"));
226 assertEquals(message, "stringField", element.getAttributeValue("id"));
227 assertEquals(message, 4, element.getChildren().size());
228 for (Object o : element.getChildren("option")) {
229 Element child = (Element) o;
230 String value = child.getValue();
231 if (StringUtil.isEmpty(value)) {
232 assertEquals(message, 1, child.getAttributes().size());
233 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
234 } else if ("name1".equals(value)) {
235 assertEquals(message, 2, child.getAttributes().size());
236 assertEquals(message, "1", child.getAttributeValue("value"));
237 assertEquals(message, "selected", child.getAttributeValue("selected"));
238 } else if ("name2".equals(value)) {
239 assertEquals(message, 1, child.getAttributes().size());
240 assertEquals(message, "2", child.getAttributeValue("value"));
241 } else if ("name3".equals(value)) {
242 assertEquals(message, 1, child.getAttributes().size());
243 assertEquals(message, "3", child.getAttributeValue("value"));
244 } else {
245 fail(message);
246 }
247 }
248
249
250
251
252
253
254
255 }
256
257 public void testDoTag12() throws Exception {
258 Map<String, String[]> map = new HashMap<String, String[]>();
259 map.put("stringField", new String[] { "1" });
260 tag.setParent(new MockFormTag(map));
261 tag.setName("stringField");
262 tag.setDynamicAttribute(null, "id", "stringField");
263 tag.setItems(items);
264 tag.setValueProperty("id");
265 tag.doTag();
266
267 Element element = getResultAsElementFromContext();
268 String message = "valuePropertyを設定";
269 assertEquals(message, 2, element.getAttributes().size());
270 assertEquals(message, "stringField", element.getAttributeValue("name"));
271 assertEquals(message, "stringField", element.getAttributeValue("id"));
272 assertEquals(message, 4, element.getChildren().size());
273 for (Object o : element.getChildren("option")) {
274 Element child = (Element) o;
275 String value = child.getValue();
276 if (StringUtil.isEmpty(value)) {
277 assertEquals(message, 1, child.getAttributes().size());
278 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
279 } else if ("name1".equals(value)) {
280 assertEquals(message, 2, child.getAttributes().size());
281 assertEquals(message, "1", child.getAttributeValue("value"));
282 assertEquals(message, "selected", child.getAttributeValue("selected"));
283 } else if ("name2".equals(value)) {
284 assertEquals(message, 1, child.getAttributes().size());
285 assertEquals(message, "2", child.getAttributeValue("value"));
286 } else if ("name3".equals(value)) {
287 assertEquals(message, 1, child.getAttributes().size());
288 assertEquals(message, "3", child.getAttributeValue("value"));
289 } else {
290 fail(message);
291 }
292 }
293
294
295
296
297
298
299
300 }
301
302 public void testDoTag13() throws Exception {
303 Map<String, String[]> map = new HashMap<String, String[]>();
304 map.put("stringField", new String[] { "1" });
305 tag.setParent(new MockFormTag(map));
306 tag.setName("stringField");
307 tag.setDynamicAttribute(null, "id", "stringField");
308 tag.setItems(items);
309 tag.setValueProperty("id");
310 tag.setLabelProperty("name");
311 tag.doTag();
312
313 Element element = getResultAsElementFromContext();
314 String message = "valuePropertyとlabelPropertyを設定";
315 assertEquals(message, 2, element.getAttributes().size());
316 assertEquals(message, "stringField", element.getAttributeValue("name"));
317 assertEquals(message, "stringField", element.getAttributeValue("id"));
318 assertEquals(message, 4, element.getChildren().size());
319 for (Object o : element.getChildren("option")) {
320 Element child = (Element) o;
321 String value = child.getValue();
322 if (StringUtil.isEmpty(value)) {
323 assertEquals(message, 1, child.getAttributes().size());
324 assertTrue(message, StringUtil.isEmpty(child.getAttributeValue("value")));
325 } else if ("name1".equals(value)) {
326 assertEquals(message, 2, child.getAttributes().size());
327 assertEquals(message, "1", child.getAttributeValue("value"));
328 assertEquals(message, "selected", child.getAttributeValue("selected"));
329 } else if ("name2".equals(value)) {
330 assertEquals(message, 1, child.getAttributes().size());
331 assertEquals(message, "2", child.getAttributeValue("value"));
332 } else if ("name3".equals(value)) {
333 assertEquals(message, 1, child.getAttributes().size());
334 assertEquals(message, "3", child.getAttributeValue("value"));
335 } else {
336 fail(message);
337 }
338 }
339
340
341
342
343
344
345
346 }
347
348 }