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