001: /*******************************************************************************
002: * Copyright (c) 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.pde.ui.tests.model.xml;
011:
012: import junit.framework.Test;
013: import junit.framework.TestSuite;
014:
015: import org.eclipse.core.runtime.CoreException;
016: import org.eclipse.pde.core.plugin.IPluginElement;
017: import org.eclipse.pde.core.plugin.IPluginExtension;
018: import org.eclipse.pde.core.plugin.IPluginObject;
019:
020: public class ExtensionElementTestCase extends ExtensionTestCase {
021:
022: public static Test suite() {
023: return new TestSuite(ExtensionElementTestCase.class);
024: }
025:
026: public void testAddNewExtensionElement1LF() throws Exception {
027: testAddNewExtensionElement1(LF);
028: }
029:
030: public void testAddNewExtensionElement2LF() throws Exception {
031: testAddNewExtensionElement2(LF);
032: }
033:
034: public void testAddNewExtensionElement3LF() throws Exception {
035: testAddNewExtensionElement3(LF);
036: }
037:
038: public void testAddNewExtensionElement1CRLF() throws Exception {
039: testAddNewExtensionElement1(CRLF);
040: }
041:
042: public void testAddNewExtensionElement2CRLF() throws Exception {
043: testAddNewExtensionElement2(CRLF);
044: }
045:
046: public void testAddNewExtensionElement3CRLF() throws Exception {
047: testAddNewExtensionElement3(CRLF);
048: }
049:
050: private void testAddNewExtensionElement1(String newLine)
051: throws Exception {
052: StringBuffer buffer = new StringBuffer(
053: "\t<extension point=\"org.eclipse.pde.ui.samples\"></extension>");
054: testAddNewExtensionElement(buffer, newLine);
055: }
056:
057: private void testAddNewExtensionElement2(String newLine)
058: throws Exception {
059: StringBuffer buffer = new StringBuffer(
060: "\t<extension point=\"org.eclipse.pde.ui.samples\">");
061: buffer.append(newLine);
062: buffer.append("\t</extension>");
063: testAddNewExtensionElement(buffer, newLine);
064: }
065:
066: private void testAddNewExtensionElement3(String newLine)
067: throws Exception {
068: StringBuffer buffer = new StringBuffer(
069: "<extension point=\"org.eclipse.pde.ui.samples\">");
070: buffer.append(newLine);
071: buffer.append("</extension>");
072: testAddNewExtensionElement(buffer, newLine);
073: }
074:
075: public void testAddExtensionElement1LF() throws Exception {
076: StringBuffer buffer = getSingleElementBuffer1(LF);
077: testAddExtensionElement(buffer, LF);
078: }
079:
080: public void testAddExtensionElement2LF() throws Exception {
081: StringBuffer buffer = getSingleElementBuffer2(LF);
082: testAddExtensionElement(buffer, LF);
083: }
084:
085: public void testAddExtensionElement3LF() throws Exception {
086: StringBuffer buffer = getSingleElementBuffer3(LF);
087: testAddExtensionElement(buffer, LF);
088: }
089:
090: public void testAddExtensionElement1CRLF() throws Exception {
091: StringBuffer buffer = getSingleElementBuffer1(CRLF);
092: testAddExtensionElement(buffer, CRLF);
093: }
094:
095: public void testAddExtensionElement2CRLF() throws Exception {
096: StringBuffer buffer = getSingleElementBuffer2(CRLF);
097: testAddExtensionElement(buffer, CRLF);
098: }
099:
100: public void testAddExtensionElement3CRLF() throws Exception {
101: StringBuffer buffer = getSingleElementBuffer3(CRLF);
102: testAddExtensionElement(buffer, CRLF);
103: }
104:
105: private StringBuffer getSingleElementBuffer1(String newLine)
106: throws Exception {
107: return new StringBuffer(
108: "<extension point=\"org.eclipse.pde.ui.samples\"><sample /></extension>");
109: }
110:
111: private StringBuffer getSingleElementBuffer2(String newLine)
112: throws Exception {
113: StringBuffer buffer = new StringBuffer(
114: "<extension point=\"org.eclipse.pde.ui.samples\">");
115: buffer.append(newLine);
116: buffer.append("<sample />");
117: buffer.append(newLine);
118: return buffer.append("</extension>");
119: }
120:
121: private StringBuffer getSingleElementBuffer3(String newLine)
122: throws Exception {
123: StringBuffer buffer = new StringBuffer(
124: "\t<extension point=\"org.eclipse.pde.ui.samples\">");
125: buffer.append(newLine);
126: buffer.append("\t\t<sample />");
127: buffer.append(newLine);
128: return buffer.append("\t</extension>");
129: }
130:
131: public void testAddNewMultipleExtensionElements1LF()
132: throws Exception {
133: testAddNewMultipleExtensionElements1(LF);
134: }
135:
136: public void testAddNewMultipleExtensionElements2LF()
137: throws Exception {
138: testAddNewMultipleExtensionElements2(LF);
139: }
140:
141: public void testAddNewMultipleExtensionElements3LF()
142: throws Exception {
143: testAddNewMultipleExtensionElements3(LF);
144: }
145:
146: public void testAddNewMultipleExtensionElements1CRLF()
147: throws Exception {
148: testAddNewMultipleExtensionElements1(CRLF);
149: }
150:
151: public void testAddNewMultipleExtensionElements2CRLF()
152: throws Exception {
153: testAddNewMultipleExtensionElements2(CRLF);
154: }
155:
156: public void testAddNewMultipleExtensionElements3CRLF()
157: throws Exception {
158: testAddNewMultipleExtensionElements3(CRLF);
159: }
160:
161: private void testAddNewMultipleExtensionElements1(String newLine)
162: throws Exception {
163: StringBuffer buffer = new StringBuffer(
164: "\t<extension point=\"org.eclipse.pde.ui.samples\"></extension>");
165: testAddNewMultipleExtensionElements(buffer, newLine);
166: }
167:
168: private void testAddNewMultipleExtensionElements2(String newLine)
169: throws Exception {
170: StringBuffer buffer = new StringBuffer(
171: "\t<extension point=\"org.eclipse.pde.ui.samples\">");
172: buffer.append(newLine);
173: buffer.append("\t</extension>");
174: testAddNewMultipleExtensionElements(buffer, newLine);
175: }
176:
177: private void testAddNewMultipleExtensionElements3(String newLine)
178: throws Exception {
179: StringBuffer buffer = new StringBuffer(
180: "<extension point=\"org.eclipse.pde.ui.samples\">");
181: buffer.append(newLine);
182: buffer.append("</extension>");
183: testAddNewMultipleExtensionElements(buffer, newLine);
184: }
185:
186: public void testAddMultipleExtensionElements1LF() throws Exception {
187: StringBuffer buffer = getSingleElementBuffer1(LF);
188: testAddMultipleExtensionElements(buffer, LF);
189: }
190:
191: public void testAddMultipleExtensionElements2LF() throws Exception {
192: StringBuffer buffer = getSingleElementBuffer2(LF);
193: testAddMultipleExtensionElements(buffer, LF);
194: }
195:
196: public void testAddMultipleExtensionElements3LF() throws Exception {
197: StringBuffer buffer = getSingleElementBuffer3(LF);
198: testAddMultipleExtensionElements(buffer, LF);
199: }
200:
201: public void testAddMultipleExtensionElements1CRLF()
202: throws Exception {
203: StringBuffer buffer = getSingleElementBuffer1(CRLF);
204: testAddMultipleExtensionElements(buffer, CRLF);
205: }
206:
207: public void testAddMultipleExtensionElements2CRLF()
208: throws Exception {
209: StringBuffer buffer = getSingleElementBuffer2(CRLF);
210: testAddMultipleExtensionElements(buffer, CRLF);
211: }
212:
213: public void testAddMultipleExtensionElements3CRLF()
214: throws Exception {
215: StringBuffer buffer = getSingleElementBuffer3(CRLF);
216: testAddMultipleExtensionElements(buffer, CRLF);
217: }
218:
219: public void testRemoveExtensionElement1LF() throws Exception {
220: StringBuffer buffer = getSingleElementBuffer1(LF);
221: testRemoveExtensionElement(buffer, LF);
222: }
223:
224: public void testRemoveExtensionElement2LF() throws Exception {
225: StringBuffer buffer = getSingleElementBuffer2(LF);
226: testRemoveExtensionElement(buffer, LF);
227: }
228:
229: public void testRemoveExtensionElement3LF() throws Exception {
230: StringBuffer buffer = getSingleElementBuffer3(LF);
231: testRemoveExtensionElement(buffer, LF);
232: }
233:
234: public void testRemoveExtensionElement1CRLF() throws Exception {
235: StringBuffer buffer = getSingleElementBuffer1(CRLF);
236: testRemoveExtensionElement(buffer, CRLF);
237: }
238:
239: public void testRemoveExtensionElement2CRLF() throws Exception {
240: StringBuffer buffer = getSingleElementBuffer2(CRLF);
241: testRemoveExtensionElement(buffer, CRLF);
242: }
243:
244: public void testRemoveExtensionElement3CRLF() throws Exception {
245: StringBuffer buffer = getSingleElementBuffer3(CRLF);
246: testRemoveExtensionElement(buffer, CRLF);
247: }
248:
249: public void testRemoveMultipleExtensionElements1LF()
250: throws Exception {
251: testRemoveMultipleExtensionElements1(LF);
252: }
253:
254: public void testRemoveMultipleExtensionElements2LF()
255: throws Exception {
256: testRemoveMultipleExtensionElements2(LF);
257: }
258:
259: public void testRemoveMultipleExtensionElements3LF()
260: throws Exception {
261: testRemoveMultipleExtensionElements3(LF);
262: }
263:
264: public void testRemoveMultipleExtensionElements1CRLF()
265: throws Exception {
266: testRemoveMultipleExtensionElements1(CRLF);
267: }
268:
269: public void testRemoveMultipleExtensionElements2CRLF()
270: throws Exception {
271: testRemoveMultipleExtensionElements2(CRLF);
272: }
273:
274: public void testRemoveMultipleExtensionElements3CRLF()
275: throws Exception {
276: testRemoveMultipleExtensionElements3(CRLF);
277: }
278:
279: private void testRemoveMultipleExtensionElements1(String newLine)
280: throws Exception {
281: StringBuffer buffer = new StringBuffer(
282: "<extension point=\"org.eclipse.pde.ui.samples\"><sample />");
283: buffer.append("<sample1/><sample2 /></extension>");
284: testRemoveMulitpleExtensionElements(buffer, newLine);
285: }
286:
287: private void testRemoveMultipleExtensionElements2(String newLine)
288: throws Exception {
289: StringBuffer buffer = new StringBuffer(
290: "<extension point=\"org.eclipse.pde.ui.samples\">");
291: buffer.append(newLine);
292: buffer.append("\t<sample />");
293: buffer.append(newLine);
294: buffer.append("\t<sample1/>");
295: buffer.append(newLine);
296: buffer.append("\t<sample2 />");
297: buffer.append(newLine);
298: buffer.append("</extension>");
299: testRemoveMulitpleExtensionElements(buffer, newLine);
300: }
301:
302: private void testRemoveMultipleExtensionElements3(String newLine)
303: throws Exception {
304: StringBuffer buffer = new StringBuffer(
305: "\t<extension point=\"org.eclipse.pde.ui.samples\">");
306: buffer.append(newLine);
307: buffer.append("\t\t<sample />");
308: buffer.append("<sample1/>");
309: buffer.append("<sample2 />");
310: buffer.append(newLine);
311: buffer.append("\t</extension>");
312: testRemoveMulitpleExtensionElements(buffer, newLine);
313: }
314:
315: private void testAddNewExtensionElement(StringBuffer buffer,
316: String newLine) throws Exception {
317: setXMLContents(buffer, newLine);
318: load(true);
319:
320: IPluginExtension[] extensions = fModel.getPluginBase()
321: .getExtensions();
322: assertEquals(extensions.length, 1);
323:
324: IPluginExtension ext = extensions[0];
325: ext.add(createElement("sample", ext));
326:
327: reload();
328:
329: extensions = fModel.getPluginBase().getExtensions();
330: assertEquals(extensions.length, 1);
331: assertEquals(extensions[0].getPoint(),
332: "org.eclipse.pde.ui.samples");
333: assertEquals(extensions[0].getChildCount(), 1);
334: assertEquals(extensions[0].getChildren()[0].getName(), "sample");
335: }
336:
337: private void testAddExtensionElement(StringBuffer buffer,
338: String newLine) throws Exception {
339: setXMLContents(buffer, newLine);
340: load(true);
341:
342: IPluginExtension[] extensions = fModel.getPluginBase()
343: .getExtensions();
344: assertEquals(extensions.length, 1);
345: assertEquals(extensions[0].getChildCount(), 1);
346: IPluginExtension ext = extensions[0];
347: ext.add(createElement("sample1", ext));
348:
349: ext = reloadModel();
350: assertEquals(ext.getChildCount(), 2);
351: assertEquals(ext.getChildren()[0].getName(), "sample");
352: }
353:
354: private void testAddNewMultipleExtensionElements(
355: StringBuffer buffer, String newLine) throws Exception {
356: setXMLContents(buffer, newLine);
357: load(true);
358:
359: IPluginExtension[] extensions = fModel.getPluginBase()
360: .getExtensions();
361: assertEquals(extensions.length, 1);
362:
363: IPluginExtension ext = extensions[0];
364: ext.add(createElement("sample1", ext));
365: ext.add(createElement("sample2", ext));
366:
367: ext = reloadModel();
368: assertEquals(ext.getChildCount(), 2);
369: assertEquals(ext.getChildren()[0].getName(), "sample1");
370: assertEquals(ext.getChildren()[1].getName(), "sample2");
371: }
372:
373: private void testAddMultipleExtensionElements(StringBuffer buffer,
374: String newLine) throws Exception {
375: setXMLContents(buffer, newLine);
376: load(true);
377:
378: IPluginExtension[] extensions = fModel.getPluginBase()
379: .getExtensions();
380: assertEquals(extensions.length, 1);
381: assertEquals(extensions[0].getChildCount(), 1);
382: IPluginExtension ext = extensions[0];
383:
384: ext.add(createElement("sample1", ext));
385: ext.add(createElement("sample2", ext));
386:
387: ext = reloadModel();
388: assertEquals(ext.getChildCount(), 3);
389: assertEquals(ext.getChildren()[0].getName(), "sample");
390: assertEquals(ext.getChildren()[1].getName(), "sample1");
391: assertEquals(ext.getChildren()[2].getName(), "sample2");
392: }
393:
394: private void testRemoveExtensionElement(StringBuffer buffer,
395: String newLine) throws Exception {
396: setXMLContents(buffer, newLine);
397: load(true);
398:
399: IPluginExtension[] extensions = fModel.getPluginBase()
400: .getExtensions();
401: assertEquals(extensions.length, 1);
402: assertEquals(extensions[0].getChildCount(), 1);
403: IPluginExtension ext = extensions[0];
404: assertEquals(ext.getChildCount(), 1);
405:
406: ext.remove(ext.getChildren()[0]);
407:
408: ext = reloadModel();
409: assertEquals(ext.getChildCount(), 0);
410: }
411:
412: private void testRemoveMulitpleExtensionElements(
413: StringBuffer buffer, String newLine) throws Exception {
414: setXMLContents(buffer, newLine);
415: load(true);
416:
417: IPluginExtension[] extensions = fModel.getPluginBase()
418: .getExtensions();
419: assertEquals(extensions.length, 1);
420: IPluginExtension ext = extensions[0];
421: assertEquals(ext.getChildCount(), 3);
422: assertEquals(ext.getPoint(), "org.eclipse.pde.ui.samples");
423: IPluginObject[] children = ext.getChildren();
424: assertEquals(children[0].getName(), "sample");
425: assertEquals(children[1].getName(), "sample1");
426: assertEquals(children[2].getName(), "sample2");
427:
428: ext.remove(children[0]);
429: ext.remove(children[2]);
430:
431: ext = reloadModel();
432: assertEquals(ext.getChildCount(), 1);
433: assertEquals(ext.getChildren()[0].getName(), "sample1");
434: }
435:
436: private IPluginElement createElement(String name,
437: IPluginExtension parent) throws CoreException {
438: IPluginElement result = fModel.getFactory().createElement(
439: parent);
440: result.setName(name);
441: return result;
442: }
443:
444: }
|