KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > xam > AbstractComponentTest


1 package org.netbeans.modules.xml.xam;
2
3 import junit.framework.*;
4 import java.beans.PropertyChangeEvent JavaDoc;
5 import java.beans.PropertyChangeListener JavaDoc;
6 import java.util.ArrayList JavaDoc;
7 import java.util.Collections JavaDoc;
8 import java.util.List JavaDoc;
9 import org.netbeans.modules.xml.xam.TestComponent.A;
10 import org.netbeans.modules.xml.xam.TestComponent.B;
11 import org.netbeans.modules.xml.xam.TestComponent.C;
12 import org.netbeans.modules.xml.xam.dom.Utils;
13 import org.openide.util.WeakListeners;
14
15 /**
16  *
17  * @author Nam Nguyen
18  */

19 public class AbstractComponentTest extends TestCase {
20     
21     TestModel model;
22     TestComponent p;
23     A a1;
24     B b1;
25     C c1;
26     Listener JavaDoc listener;
27     TestComponentListener clistener;
28     
29     public AbstractComponentTest(String JavaDoc testName) {
30         super(testName);
31     }
32
33     protected void setUp() throws Exception JavaDoc {
34     }
35     
36
37     protected void tearDown() throws Exception JavaDoc {
38     }
39
40     public static Test suite() {
41         TestSuite suite = new TestSuite(AbstractComponentTest.class);
42         
43         return suite;
44     }
45
46     static class Listener implements PropertyChangeListener JavaDoc {
47         private String JavaDoc event;
48         private Object JavaDoc old;
49         private Object JavaDoc now;
50         
51         public void propertyChange(PropertyChangeEvent JavaDoc evt) {
52             assertNotNull(evt);
53             if (evt.getPropertyName().equals("setup")) {
54                 return;
55             }
56             event = evt.getPropertyName();
57             old = evt.getOldValue();
58             now = evt.getNewValue();
59         }
60
61         public String JavaDoc getEvent() { return event; }
62         public Object JavaDoc getOld() { return old; }
63         public Object JavaDoc getNow() { return now; }
64         public void reset() { event = null; old = null; now = null; }
65     
66         public void assertEvent(String JavaDoc name, Object JavaDoc old, Object JavaDoc now) {
67             assertEquals(name+".event", name, getEvent());
68             assertEquals(name+".old", old, getOld());
69             assertEquals(name+".now", now, getNow());
70         }
71     }
72     
73     static class TestComponentListener implements ComponentListener {
74         List JavaDoc<ComponentEvent> accu = new ArrayList JavaDoc<ComponentEvent>();
75         public void valueChanged(ComponentEvent evt) {
76             accu.add(evt);
77         }
78         public void childrenAdded(ComponentEvent evt) {
79             accu.add(evt);
80         }
81         public void childrenDeleted(ComponentEvent evt) {
82             accu.add(evt);
83         }
84         public void reset() { accu.clear(); }
85         public int getEventCount() { return accu.size(); }
86         public List JavaDoc<ComponentEvent> getEvents() { return accu; }
87     
88         private void assertEvent(ComponentEvent.EventType type, Component source) {
89             for (ComponentEvent e : accu) {
90                 if (e.getEventType().equals(type) &&
91                     e.getSource() == source) {
92                     return;
93                 }
94             }
95             assertTrue("Expect component change event" + type +" on source " + source, false);
96         }
97     }
98     
99     public void testComponentEvents() throws Exception JavaDoc {
100         TestModel model = new TestModel();
101         TestComponent root = model.getRootComponent();
102         TestComponentListener listener1 = new TestComponentListener();
103         TestComponentListener listener2 = new TestComponentListener();
104         model.addComponentListener((ComponentListener)WeakListeners.create(ComponentListener.class, listener1, model));
105         model.addComponentListener((ComponentListener)WeakListeners.create(ComponentListener.class, listener2, model));
106         
107         model.startTransaction();
108         model.addChildComponent(root, new TestComponent.B(model, 1), -1);
109         model.endTransaction();
110         
111         listener1.assertEvent(ComponentEvent.EventType.CHILD_ADDED, root);
112         listener2.assertEvent(ComponentEvent.EventType.CHILD_ADDED, root);
113
114         model.startTransaction();
115         B b = root.getChild(B.class);
116         b.setValue("test attribute value");
117         model.endTransaction();
118         listener1.assertEvent(ComponentEvent.EventType.VALUE_CHANGED, b);
119         listener2.assertEvent(ComponentEvent.EventType.VALUE_CHANGED, b);
120
121         model.startTransaction();
122         model.removeChildComponent(root.getChild(B.class));
123         model.endTransaction();
124
125         listener1.assertEvent(ComponentEvent.EventType.CHILD_REMOVED, root);
126         listener2.assertEvent(ComponentEvent.EventType.CHILD_REMOVED, root);
127     }
128     
129     public void testSetSameChild() throws Exception JavaDoc {
130         TestModel model = new TestModel();
131         TestComponent root = model.getRootComponent();
132
133         B b1 = new TestComponent.B(model, 1);
134         model.startTransaction();
135         model.addChildComponent(root, b1, -1);
136         model.endTransaction();
137         
138         model.startTransaction();
139         root.setChild(B.class, "testSetSameChild", b1, Collections.EMPTY_LIST);
140         model.endTransaction();
141         
142         assertEquals(1, root.getChildren(B.class).size());
143     }
144
145     public void testAddAlreadyAddedChild() throws Exception JavaDoc {
146         TestModel model = new TestModel();
147         TestComponent root = model.getRootComponent();
148
149         B b1 = new TestComponent.B(model, 1);
150         model.startTransaction();
151         model.addChildComponent(root, b1, -1);
152         model.endTransaction();
153         
154         model.startTransaction();
155         try {
156             root.appendChild("testSetSameChild", b1);
157             assertFalse("Failed to get IllegalArgumentException", true);
158         } catch(IllegalArgumentException JavaDoc e) {
159             //OK
160
} finally {
161             if (model.isIntransaction()) model.endTransaction();
162         }
163         
164         assertEquals(1, root.getChildren(B.class).size());
165     }
166     
167     public void testRemoveNonExistingChild() throws Exception JavaDoc {
168         TestModel model = new TestModel();
169         TestComponent root = model.getRootComponent();
170
171         B b1 = new TestComponent.B(model, 1);
172         model.startTransaction();
173         try {
174             root.removeChild("testRemove", b1);
175             assertFalse("Failed to get IllegalArgumentException", true);
176         } catch(IllegalArgumentException JavaDoc e) {
177             //OK
178
} finally {
179             if (model.isIntransaction()) model.endTransaction();
180         }
181         
182         model.startTransaction();
183         model.addChildComponent(root, b1, -1);
184         model.endTransaction();
185         
186         model.startTransaction();
187         root.removeChild("testRemoveChild", b1);
188         model.endTransaction();
189         assertEquals(0, root.getChildren(B.class).size());
190         
191         model.startTransaction();
192         try {
193             root.removeChild("testRemove", b1);
194             assertFalse("Failed to get IllegalArgumentException", true);
195         } catch(IllegalArgumentException JavaDoc e) {
196             //OK
197
} finally {
198             if (model.isIntransaction()) model.endTransaction();
199         }
200     }
201     
202     static char[] basechars = new char[] {
203             0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6, 0x00F8,
204             0x00FF, 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, 0x0148, 0x014A, 0x017E,
205             0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, 0x01FA, 0x0217, 0x0250,
206             0x02A8, 0x02BB, 0x02C1, 0x0386, 0x0388, 0x038A, 0x038C, 0x038E, 0x03A1,
207             0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x03E2,
208             0x03F3, 0x0401, 0x040C, 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481,
209             0x0490, 0x04C4, 0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE,
210             0x04F5, 0x04F8, 0x04F9, 0x0531, 0x0556, 0x0559, 0x0561, 0x0586, 0x05D0,
211             0x05EA, 0x05F0, 0x05F2, 0x0621, 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7,
212             0x06BA, 0x06BE, 0x06C0, 0x06CE, 0x06D0, 0x06D3, 0x06D5, 0x06E5, 0x06E6,
213             0x0905, 0x0939, 0x093D, 0x0958, 0x0961, 0x0985, 0x098C, 0x098F, 0x0990,
214             0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B2, 0x09B6, 0x09B9, 0x09DC, 0x09DD,
215             0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10, 0x0A13,
216             0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36, 0x0A38, 0x0A39,
217             0x0A59, 0x0A5C, 0x0A5E, 0x0A72, 0x0A74, 0x0A85, 0x0A8B, 0x0A8D, 0x0A8F,
218             0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9,
219             0x0ABD, 0x0AE0, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A,
220             0x0B30, 0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B3D, 0x0B5C, 0x0B5D, 0x0B5F,
221             0x0B61, 0x0B85, 0x0B8A, 0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A,
222             0x0B9C, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB5,
223             0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10, 0x0C12, 0x0C28, 0x0C2A,
224             0x0C33, 0x0C35, 0x0C39, 0x0C60, 0x0C61, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90,
225             0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9, 0x0CDE, 0x0CE0, 0x0CE1,
226             0x0D05, 0x0D0C, 0x0D0E, 0x0D10, 0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D60,
227             0x0D61, 0x0E01, 0x0E2E, 0x0E30, 0x0E32, 0x0E33, 0x0E40, 0x0E45, 0x0E81,
228             0x0E82, 0x0E84, 0x0E87, 0x0E88, 0x0E8A, 0x0E8D, 0x0E94, 0x0E97, 0x0E99,
229             0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, 0x0EA7, 0x0EAA, 0x0EAB, 0x0EAD, 0x0EAE,
230             0x0EB0, 0x0EB2, 0x0EB3, 0x0EBD, 0x0EC0, 0x0EC4, 0x0F40, 0x0F47, 0x0F49,
231             0x0F69, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1100, 0x1102, 0x1103, 0x1105,
232             0x1107, 0x1109, 0x110B, 0x110C, 0x110E, 0x1112, 0x113C, 0x113E, 0x1140,
233             0x114C, 0x114E, 0x1150, 0x1154, 0x1155, 0x1159, 0x115F, 0x1161, 0x1163,
234             0x1165, 0x1167, 0x1169, 0x116D, 0x116E, 0x1172, 0x1173, 0x1175, 0x119E,
235             0x11A8, 0x11AB, 0x11AE, 0x11AF, 0x11B7, 0x11B8, 0x11BA, 0x11BC, 0x11C2,
236             0x11EB, 0x11F0, 0x11F9, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9, 0x1F00, 0x1F15,
237             0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D, 0x1F50, 0x1F57, 0x1F59,
238             0x1F5B, 0x1F5D, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC, 0x1FBE,
239             0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB, 0x1FE0,
240             0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x2126, 0x212A, 0x212B, 0x212E,
241             0x2180, 0x2182, 0x3041, 0x3094, 0x30A1, 0x30FA, 0x3105, 0x312C, 0xAC00,
242             0xD7A2, 0xD7A3
243         };
244         
245     static char[] ideographics = new char[] {
246             0x4E00, 0x9FA5, 0x3007, 0x3021, 0x3028, 0x3029
247         };
248         
249     static char[] combiningChars = new char[] {
250             0x4E00, 0x0300, 0x0340, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591,
251             0x05A1, 0x05A0, 0x05A3, 0x05B0, 0x05B9, 0x05BB, 0x05BD, 0x05BF, 0x05C1,
252             0x05C2, 0x05C4, 0x064B, 0x0652, 0x0670, 0x06D6, 0x06DC, 0x06DD, 0x06DF,
253             0x06E0, 0x06E4, 0x06E7, 0x06E8, 0x06EA, 0x06ED, 0x0901, 0x0903, 0x093C,
254             0x093E, 0x094C, 0x094D, 0x0951, 0x0954, 0x0962, 0x0963, 0x0981, 0x0983,
255             0x09BC, 0x09BE, 0x09BF, 0x09C0, 0x09C4, 0x09C7, 0x09C8, 0x09CB, 0x09CD,
256             0x09D7, 0x09E2, 0x09E3, 0x0A02, 0x0A3C, 0x0A3E, 0x0A3F, 0x0A40, 0x0A42,
257             0x0A47, 0x0A48, 0x0A4B, 0x0A4D, 0x0A70, 0x0A71, 0x0A81, 0x0A83, 0x0ABC,
258             0x0ABE, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0B01, 0x0B03, 0x0B3C,
259             0x0B3E, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57, 0x0B82,
260             0x0B83, 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0BD7, 0x0C01,
261             0x0C03, 0x0C3E, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D, 0x0C55, 0x0C56,
262             0x0C82, 0x0C83, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8, 0x0CCA, 0x0CCD, 0x0CD5,
263             0x0CD6, 0x0D02, 0x0D03, 0x0D3E, 0x0D43, 0x0D46, 0x0D48, 0x0D4A, 0x0D4D,
264             0x0D57, 0x0E31, 0x0E34, 0x0E3A, 0x0E47, 0x0E4E, 0x0EB1, 0x0EB4, 0x0EB9,
265             0x0EBB, 0x0EBC, 0x0EC8, 0x0ECD, 0x0F18, 0x0F19, 0x0F35, 0x0F37, 0x0F39,
266             0x0F3E, 0x0F3F, 0x0F71, 0x0F84, 0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F97,
267             0x0F99, 0x0FAD, 0x0FB1, 0x0FB7, 0x0FB9, 0x20D0, 0x20DC, 0x20E1, 0x302A,
268             0x302F, 0x3099, 0x309A };
269         
270     static char[] digits = new char[] {
271             0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F, 0x09E6,
272             0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, 0x0B6F, 0x0BE7, 0x0BEF,
273             0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F, 0x0E50, 0x0E59, 0x0ED0,
274             0x0ED9, 0x0F20, 0x0F28, 0x0F29
275         };
276         
277     static char[] extenders = new char[] {
278             0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, 0x3005, 0x3031,
279             0x3035, 0x309D, 0x309E, 0x30FC, 0x30FD, 0x30FE
280         };
281
282     public void testNCNamePattern() throws Exception JavaDoc {
283         assertTrue(Utils.isValidNCName(String.valueOf(basechars)));
284         assertTrue(Utils.isValidNCName(String.valueOf(ideographics)));
285         
286         assertTrue(Utils.isValidNCName("_"+String.valueOf(digits)));
287         assertTrue(Utils.isValidNCName("_"+String.valueOf(combiningChars)));
288         assertTrue(Utils.isValidNCName("_"+String.valueOf(extenders)));
289         
290         assertTrue(Utils.isValidNCName("ab_C1"));
291         assertTrue(Utils.isValidNCName("_abC1"));
292         assertTrue(Utils.isValidNCName("a.b.C1"));
293         assertTrue(Utils.isValidNCName("a-b-C1"));
294         
295         assertFalse(Utils.isValidNCName("2ab_C1"));
296         assertFalse(Utils.isValidNCName("ab:C1"));
297         assertFalse(Utils.isValidNCName("ab!C1"));
298         assertFalse(Utils.isValidNCName("ab@C1"));
299         assertFalse(Utils.isValidNCName("ab#C1"));
300         assertFalse(Utils.isValidNCName("ab$C1"));
301         assertFalse(Utils.isValidNCName("ab%C1"));
302         assertFalse(Utils.isValidNCName("ab^C1"));
303         assertFalse(Utils.isValidNCName("ab&C1"));
304         assertFalse(Utils.isValidNCName("ab*C1"));
305         assertFalse(Utils.isValidNCName("ab(C1"));
306         assertFalse(Utils.isValidNCName("ab)C1"));
307         assertFalse(Utils.isValidNCName("ab+C1"));
308         assertFalse(Utils.isValidNCName("ab=C1"));
309         assertFalse(Utils.isValidNCName("ab C1"));
310         assertFalse(Utils.isValidNCName("ab[C1"));
311         assertFalse(Utils.isValidNCName("ab]C1"));
312         assertFalse(Utils.isValidNCName("ab{C1"));
313         assertFalse(Utils.isValidNCName("ab}C1"));
314         assertFalse(Utils.isValidNCName("ab|C1"));
315         assertFalse(Utils.isValidNCName("ab?C1"));
316         assertFalse(Utils.isValidNCName("ab/C1"));
317         assertFalse(Utils.isValidNCName("ab>C1"));
318         assertFalse(Utils.isValidNCName("ab<C1"));
319         assertFalse(Utils.isValidNCName("ab,C1"));
320         assertFalse(Utils.isValidNCName("ab;C1"));
321         assertFalse(Utils.isValidNCName("ab'C1"));
322         assertFalse(Utils.isValidNCName("ab~C1"));
323         assertFalse(Utils.isValidNCName("ab`C1"));
324     }
325 }
326     
327
Popular Tags