001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: /*
043: * CodeGenLinksTestCase.java
044: *
045: * Created on February 2, 2007, 6:17 PM
046: *
047: * To change this template, choose Tools | Template Manager
048: * and open the template in the editor.
049: */
050:
051: package org.netbeans.test.uml.codegen;
052:
053: import org.netbeans.test.umllib.project.JavaProject;
054: import org.netbeans.test.umllib.project.ProjectType;
055: import org.netbeans.test.umllib.project.UMLProject;
056: import org.netbeans.test.umllib.project.elem.IArgumentElem;
057: import org.netbeans.test.umllib.project.elem.IClassElem;
058: import org.netbeans.test.umllib.project.elem.IInterfaceElem;
059: import org.netbeans.test.umllib.project.elem.IPackageElem;
060: import org.netbeans.test.umllib.project.elem.VisibilityType;
061: import org.netbeans.test.umllib.project.elem.impl.ArgumentElem;
062: import org.netbeans.test.umllib.project.elem.impl.AttributeElem;
063: import org.netbeans.test.umllib.project.elem.impl.ClassElem;
064: import org.netbeans.test.umllib.project.elem.impl.OperationElem;
065: import org.netbeans.test.umllib.project.elem.impl.PackageElem;
066: import org.netbeans.test.umllib.project.elem.impl.PrimitiveType;
067: import org.netbeans.jellytools.nodes.Node;
068: import org.netbeans.test.umllib.project.elem.IJavaElem;
069: import org.netbeans.test.umllib.project.elem.impl.InterfaceElem;
070: import org.netbeans.test.umllib.project.verifier.elem.ReflectionElementVerifier;
071: import org.netbeans.test.umllib.project.verifier.elem.TextElementVerifier;
072:
073: /**
074: *
075: * @author Alexandr Scherbatiy
076: */
077:
078: public class CodeGenLinksTestCase extends CodeGenerationTestCase {
079:
080: /** Creates a new instance of GenCodeLinksTestCase */
081: public CodeGenLinksTestCase(String name) {
082: super (name);
083: }
084:
085: //*
086:
087: // =================================================================== //
088: // ====================== Implementation Link ====================== //
089: // =================================================================== //
090:
091: public void testImplementationLinkGeneration() {
092:
093: JavaProject javaProject = JavaProject.createProject(
094: getNextJavaProjectName(), ProjectType.JAVA_APPLICATION,
095: true, false);
096: UMLProject umlProject = new UMLProject(UML_PROJECT_NAME,
097: ProjectType.UML_JAVA_PLATFORM_MODEL);
098:
099: Node umlNode = new Node(umlProject.getProjectNode(),
100: "Model|links|implementation");
101: umlProject.generateCode(umlNode, javaProject);
102:
103: compileJavaProject(getJavaProjectName());
104:
105: }
106:
107: public IInterfaceElem getImplementationLinkInterface() {
108: IPackageElem linkPackage = new PackageElem("links");
109: IPackageElem pack = new PackageElem("implementation",
110: linkPackage);
111:
112: IInterfaceElem interfaceElem = new InterfaceElem("Interface1",
113: pack);
114:
115: interfaceElem.getOperationList().add(
116: new OperationElem("run", PrimitiveType.VOID,
117: VisibilityType.PUBLIC));
118: return interfaceElem;
119:
120: }
121:
122: public IClassElem getImplementationLinkClass() {
123:
124: IPackageElem linkPackage = new PackageElem("links");
125: IPackageElem pack = new PackageElem("implementation",
126: linkPackage);
127:
128: IClassElem classElem = new ClassElem("Class1", pack);
129: classElem.getSuperInterfaceList().add(
130: getImplementationLinkInterface());
131:
132: classElem.getOperationList().add(
133: new OperationElem("run", PrimitiveType.VOID,
134: VisibilityType.PUBLIC));
135: return classElem;
136:
137: }
138:
139: // === Class1 implements Interface1 ====
140:
141: public void testImplementationLinkTextInterface() {
142: IInterfaceElem elem = getImplementationLinkInterface();
143: assertVerification(new TextElementVerifier(
144: getEditorOperator(elem), elem));
145: }
146:
147: public void testImplementationLinkTextClass() {
148: IClassElem elem = getImplementationLinkClass();
149: assertVerification(new TextElementVerifier(
150: getEditorOperator(elem), elem));
151: }
152:
153: public void testImplementationLinkReflectionClass() {
154:
155: JavaProject javaProject = new JavaProject(getJavaProjectName());
156:
157: Class cls = javaProject
158: .getJavaClass("links.implementation.Class1");
159: IClassElem classElem = getImplementationLinkClass();
160:
161: ReflectionElementVerifier elementVerifier = new ReflectionElementVerifier(
162: cls, classElem);
163: assertVerification(elementVerifier);
164:
165: }
166:
167: // */
168:
169: // =================================================================== //
170: // ====================== Generalization Link ====================== //
171: // =================================================================== //
172:
173: public void testGeneralizationLinkGeneration() {
174:
175: JavaProject javaProject = JavaProject.createProject(
176: getNextJavaProjectName(), ProjectType.JAVA_APPLICATION,
177: true, false);
178: UMLProject umlProject = new UMLProject(UML_PROJECT_NAME,
179: ProjectType.UML_JAVA_PLATFORM_MODEL);
180:
181: Node umlNode = new Node(umlProject.getProjectNode(),
182: "Model|links|generalization");
183: umlProject.generateCode(umlNode, javaProject);
184:
185: compileJavaProject(getJavaProjectName());
186:
187: }
188:
189: public IClassElem getGeneralizationLinkSuperClass() {
190:
191: IPackageElem linkPackage = new PackageElem("links");
192: IPackageElem pack = new PackageElem("generalization",
193: linkPackage);
194:
195: IClassElem elem = new ClassElem("Class1", pack);
196:
197: return elem;
198:
199: }
200:
201: public IClassElem getGeneralizationLinkClass() {
202:
203: IPackageElem linkPackage = new PackageElem("links");
204: IPackageElem pack = new PackageElem("generalization",
205: linkPackage);
206:
207: IClassElem elem = new ClassElem("Class2", pack,
208: getGeneralizationLinkSuperClass());
209: return elem;
210:
211: }
212:
213: // === Class2 extends Class1 ====
214:
215: public void testGeneralizationLinkTextClasses() {
216: IJavaElem elem = getGeneralizationLinkClass();
217: assertVerification(new TextElementVerifier(
218: getEditorOperator(elem), elem));
219: }
220:
221: public void testGeneralizationLinkReflectionClasses() {
222: assertVerification(new ReflectionElementVerifier(
223: getGeneralizationLinkClass(), getJavaProjectName()));
224: }
225:
226: // === Interface2 extends Interface1 ====
227:
228: public void testGeneralizationLinkInterfaces() {
229:
230: JavaProject javaProject = new JavaProject(getJavaProjectName());
231:
232: Class cls = javaProject
233: .getJavaClass("links.generalization.Interface2");
234:
235: IPackageElem linkPackage = new PackageElem("links");
236: IPackageElem pack = new PackageElem("generalization",
237: linkPackage);
238:
239: // Super Class
240: IInterfaceElem interfaceElem1 = new InterfaceElem("Interface1",
241: pack);
242: IInterfaceElem interfaceElem2 = new InterfaceElem("Interface2",
243: pack, interfaceElem1);
244:
245: ReflectionElementVerifier elementVerifier = new ReflectionElementVerifier(
246: cls, interfaceElem2);
247: assertVerification(elementVerifier);
248:
249: }
250:
251: //*
252:
253: // =================================================================== //
254: // ====================== Aggregation Link ====================== //
255: // =================================================================== //
256:
257: public void testAggregationLinkGeneration() {
258:
259: JavaProject javaProject = JavaProject.createProject(
260: getNextJavaProjectName(), ProjectType.JAVA_APPLICATION,
261: true, false);
262: UMLProject umlProject = new UMLProject(UML_PROJECT_NAME,
263: ProjectType.UML_JAVA_PLATFORM_MODEL);
264:
265: Node umlNode = new Node(umlProject.getProjectNode(),
266: "Model|links|aggregation");
267: umlProject.generateCode(umlNode, javaProject);
268:
269: compileJavaProject(getJavaProjectName());
270:
271: }
272:
273: // === Class1 { Class2 mClass2; } ====
274:
275: public void testAggregationLinkClasses() {
276:
277: JavaProject javaProject = new JavaProject(getJavaProjectName());
278:
279: Class cls = javaProject
280: .getJavaClass("links.aggregation.Class1");
281:
282: IPackageElem linkPackage = new PackageElem("links");
283: IPackageElem pack = new PackageElem("aggregation", linkPackage);
284:
285: // attribute type
286: IClassElem classElem2 = new ClassElem("Class2", pack);
287:
288: IClassElem classElem1 = new ClassElem("Class1", pack);
289:
290: classElem1.getAttributeList().add(
291: new AttributeElem("mClass2", classElem2,
292: VisibilityType.PRIVATE));
293: classElem1.getOperationList().add(
294: new OperationElem("getClass2", classElem2,
295: VisibilityType.PUBLIC));
296: classElem1.getOperationList().add(
297: new OperationElem("setClass2", PrimitiveType.VOID,
298: VisibilityType.PUBLIC,
299: new IArgumentElem[] { new ArgumentElem("val",
300: classElem2) }));
301:
302: ReflectionElementVerifier elementVerifier = new ReflectionElementVerifier(
303: cls, classElem1);
304: assertVerification(elementVerifier);
305:
306: }
307:
308: //*
309: // =================================================================== //
310: // ====================== Nested Link ====================== //
311: // =================================================================== //
312:
313: public void testNestedLinkGeneration() {
314:
315: JavaProject javaProject = JavaProject.createProject(
316: getNextJavaProjectName(), ProjectType.JAVA_APPLICATION,
317: true, false);
318: UMLProject umlProject = new UMLProject(UML_PROJECT_NAME,
319: ProjectType.UML_JAVA_PLATFORM_MODEL);
320:
321: Node umlNode = new Node(umlProject.getProjectNode(),
322: "Model|links|nested");
323: umlProject.generateCode(umlNode, javaProject);
324:
325: compileJavaProject(getJavaProjectName());
326:
327: }
328:
329: // === class Outer { class Inner{} } ====
330:
331: public void testNestedLinkClasses() {
332:
333: JavaProject javaProject = new JavaProject(getJavaProjectName());
334:
335: Class cls = javaProject.getJavaClass("links.nested.Outer");
336:
337: IPackageElem linkPackage = new PackageElem("links");
338: IPackageElem pack = new PackageElem("nested", linkPackage);
339:
340: // attribute type
341: IClassElem innerElem = new ClassElem("Inner", pack);
342:
343: IClassElem outerElem = new ClassElem("Outer", pack);
344:
345: outerElem.getNestedElemList().add(innerElem);
346:
347: ReflectionElementVerifier elementVerifier = new ReflectionElementVerifier(
348: cls, outerElem);
349: assertVerification(elementVerifier);
350:
351: }
352:
353: // =================================================================== //
354: // ====================== Generic Link ====================== //
355: // =================================================================== //
356:
357: public void testGenericLinkGeneration() {
358:
359: JavaProject javaProject = JavaProject.createProject(
360: getNextJavaProjectName(), ProjectType.JAVA_APPLICATION,
361: true, false);
362: UMLProject umlProject = new UMLProject(UML_PROJECT_NAME,
363: ProjectType.UML_JAVA_PLATFORM_MODEL);
364:
365: Node umlNode = new Node(umlProject.getProjectNode(),
366: "Model|links|generic");
367: umlProject.generateCode(umlNode, javaProject);
368:
369: compileJavaProject(getJavaProjectName(), 78564);
370:
371: }
372:
373: public IClassElem getGenericClassElem() {
374:
375: IPackageElem elementPackage = new PackageElem("links");
376: IPackageElem pack = new PackageElem("generic", elementPackage);
377:
378: IClassElem elem = new ClassElem("Class2", pack);
379: IClassElem templateElem = new ClassElem("TemplateClass1", pack);
380: templateElem.getTemplateParameterList().add(INTEGER);
381:
382: elem.getAttributeList()
383: .add(
384: new AttributeElem("mTemplateClass1String",
385: templateElem));
386:
387: elem.getOperationList().add(
388: new OperationElem("getTemplateClass1String",
389: templateElem, VisibilityType.PUBLIC));
390: elem.getOperationList().add(
391: new OperationElem("setTemplateClass1String",
392: PrimitiveType.VOID, VisibilityType.PUBLIC,
393: new IArgumentElem[] { new ArgumentElem("val",
394: templateElem) }));
395:
396: return elem;
397: }
398:
399: public void testGenericLinkAttributesText() {
400:
401: IClassElem elem = getGenericClassElem();
402:
403: assertVerification(new TextElementVerifier(
404: getEditorOperator(elem), elem));
405:
406: }
407:
408: public void testGenericLinkAttributesClass() {
409: JavaProject javaProject = new JavaProject(getJavaProjectName());
410:
411: IClassElem elem = getGenericClassElem();
412:
413: Class cls = javaProject.getJavaClass(elem.getFullName());
414:
415: assertVerification(new ReflectionElementVerifier(cls, elem));
416:
417: }
418:
419: //*/
420:
421: }
|