1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.trinidad.component;
20
21 import javax.faces.component.NamingContainer;
22 import javax.faces.context.FacesContext;
23 import javax.faces.render.Renderer;
24
25 import junit.framework.Test;
26 import junit.framework.TestSuite;
27
28 import org.apache.myfaces.trinidadbuild.test.FacesTestCase;
29
30 import org.apache.myfaces.trinidad.component.UIXPanel;
31
32 public class ClientIdCachingTest extends FacesTestCase
33 {
34 public static final Test suite()
35 {
36 return new TestSuite(ClientIdCachingTest.class);
37 }
38
39 public static void main(String[] args) throws Throwable
40 {
41 junit.textui.TestRunner.run(suite());
42 }
43
44 public ClientIdCachingTest(
45 String testName)
46 {
47 super(testName);
48 }
49
50 static private class TestPanel extends UIXPanel
51 {
52 protected Renderer getRenderer(FacesContext context)
53 {
54 return null;
55 }
56 }
57
58 static private class TestNamingContainer extends TestPanel
59 implements NamingContainer
60 {
61 }
62
63
64 @SuppressWarnings("unchecked")
65 public void testBasic()
66 {
67 TestNamingContainer a = new TestNamingContainer(); a.setId("a");
68 TestNamingContainer b = new TestNamingContainer(); b.setId("b");
69 TestNamingContainer d = new TestNamingContainer(); d.setId("d");
70 TestPanel e = new TestPanel(); e.setId("e");
71 TestPanel g = new TestPanel(); g.setId("g");
72 a.getChildren().add(b);
73 b.getChildren().add(d);
74 b.getChildren().add(g);
75 d.getChildren().add(e);
76
77 FacesContext context = FacesContext.getCurrentInstance();
78 assertEquals("a:b:d:e", e.getClientId(context));
79 }
80
81 public void testSetId()
82 {
83 TestNamingContainer a = new TestNamingContainer(); a.setId("a");
84 TestNamingContainer b = new TestNamingContainer(); b.setId("b");
85 TestNamingContainer d = new TestNamingContainer(); d.setId("d");
86 TestPanel e = new TestPanel(); e.setId("e");
87 TestPanel g = new TestPanel(); g.setId("g");
88 a.getChildren().add(b);
89 b.getChildren().add(d);
90 b.getChildren().add(g);
91 d.getChildren().add(e);
92
93
94 FacesContext context = FacesContext.getCurrentInstance();
95 assertEquals("a:b:d:e", e.getClientId(context));
96
97
98 e.setId("ePrime");
99 assertEquals("a:b:d:ePrime", e.getClientId(context));
100
101
102 e.getAttributes().put("id", "eDoublePrime");
103 assertEquals("a:b:d:eDoublePrime", e.getClientId(context));
104
105
106
107 b.setId("bPrime");
108 assertEquals("a:bPrime:d:eDoublePrime", e.getClientId(context));
109
110
111 b.getAttributes().put("id", "bDoublePrime");
112 assertEquals("a:bDoublePrime:d:eDoublePrime", e.getClientId(context));
113 }
114
115 public void testMoving()
116 {
117 TestNamingContainer a = new TestNamingContainer(); a.setId("a");
118 TestNamingContainer b = new TestNamingContainer(); b.setId("b");
119 TestNamingContainer c = new TestNamingContainer(); c.setId("c");
120 TestNamingContainer d = new TestNamingContainer(); d.setId("d");
121 TestPanel e = new TestPanel(); e.setId("e");
122 TestPanel f = new TestPanel(); f.setId("f");
123 TestPanel g = new TestPanel(); g.setId("g");
124 a.getChildren().add(b);
125 a.getChildren().add(c);
126 b.getChildren().add(d);
127 b.getChildren().add(g);
128 d.getChildren().add(e);
129 d.getChildren().add(f);
130
131
132 FacesContext context = FacesContext.getCurrentInstance();
133 assertEquals("a:b:d:e", e.getClientId(context));
134
135
136 f.getChildren().add(e);
137 assertEquals("a:b:d:e", e.getClientId(context));
138
139
140 g.getChildren().add(e);
141 assertEquals("a:b:e", e.getClientId(context));
142 }
143 }