1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html;
20
21 import java.io.StringWriter;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import javax.faces.component.UISelectItem;
26 import javax.faces.component.UISelectItems;
27 import javax.faces.component.behavior.AjaxBehavior;
28 import javax.faces.component.html.HtmlSelectOneRadio;
29 import javax.faces.model.SelectItem;
30
31 import junit.framework.Test;
32 import junit.framework.TestSuite;
33
34 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
35 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
36 import org.apache.myfaces.test.base.AbstractJsfTestCase;
37 import org.apache.myfaces.test.mock.MockRenderKitFactory;
38 import org.apache.myfaces.test.mock.MockResponseWriter;
39
40
41
42
43
44 public class HtmlRadioRendererTest extends AbstractJsfTestCase
45 {
46 private MockResponseWriter writer ;
47 private HtmlSelectOneRadio selectOneRadio;
48
49 public HtmlRadioRendererTest(String name)
50 {
51 super(name);
52 }
53
54 public static Test suite() {
55 return new TestSuite(HtmlRadioRendererTest.class);
56 }
57
58 public void setUp() throws Exception
59 {
60 super.setUp();
61
62 selectOneRadio = new HtmlSelectOneRadio();
63
64 writer = new MockResponseWriter(new StringWriter(), null, null);
65 facesContext.setResponseWriter(writer);
66
67 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
68 facesContext.getRenderKit().addRenderer(
69 selectOneRadio.getFamily(),
70 selectOneRadio.getRendererType(),
71 new HtmlRadioRenderer());
72
73 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
74 }
75
76 public void tearDown() throws Exception
77 {
78 super.tearDown();
79 selectOneRadio = null;
80 writer = null;
81 }
82
83 public void testHtmlPropertyPassTru() throws Exception
84 {
85 HtmlRenderedAttr[] attrs = {
86
87 new HtmlRenderedAttr("accesskey"),
88
89 new HtmlRenderedAttr("dir"),
90 new HtmlRenderedAttr("lang"),
91 new HtmlRenderedAttr("title"),
92 new HtmlRenderedAttr("role"),
93
94 new HtmlRenderedAttr("onfocus"),
95 new HtmlRenderedAttr("onblur"),
96
97 new HtmlRenderedAttr("onchange"),
98 new HtmlRenderedAttr("onselect"),
99
100 new HtmlRenderedAttr("onclick"),
101 new HtmlRenderedAttr("ondblclick"),
102 new HtmlRenderedAttr("onkeydown"),
103 new HtmlRenderedAttr("onkeypress"),
104 new HtmlRenderedAttr("onkeyup"),
105 new HtmlRenderedAttr("onmousedown"),
106 new HtmlRenderedAttr("onmousemove"),
107 new HtmlRenderedAttr("onmouseout"),
108 new HtmlRenderedAttr("onmouseover"),
109 new HtmlRenderedAttr("onmouseup"),
110
111 new HtmlRenderedAttr("style", 1),
112 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\"", 1),
113
114
115 new HtmlRenderedAttr("tabindex")
116 };
117
118 List<SelectItem> items = new ArrayList<SelectItem>();
119 items.add(new SelectItem("mars"));
120
121 UISelectItems selectItems = new UISelectItems();
122 selectItems.setValue(items);
123
124 selectOneRadio.getChildren().add(selectItems);
125
126 HtmlCheckAttributesUtil.checkRenderedAttributes(
127 selectOneRadio, facesContext, writer, attrs);
128 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
129 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
130 }
131 }
132
133
134
135
136 public void testClientBehaviorHolderRendersIdAndName()
137 {
138 UISelectItem item1 = new UISelectItem();
139 item1.setItemLabel("#1");
140 item1.setItemValue("#1");
141
142 UISelectItem item2 = new UISelectItem();
143 item2.setItemLabel("#2");
144 item2.setItemValue("#2");
145
146 selectOneRadio.addClientBehavior("keypress", new AjaxBehavior());
147 try
148 {
149 selectOneRadio.getChildren().add(item1);
150 selectOneRadio.getChildren().add(item2);
151 selectOneRadio.encodeAll(facesContext);
152 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
153 assertTrue(output.matches(".+id=\".+\".+"));
154 assertTrue(output.matches(".+name=\".+\".+"));
155 }
156 catch (Exception e)
157 {
158 fail(e.getMessage());
159 }
160
161 }
162 }