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-2006 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: package org.netbeans.modules.apisupport.project.ui;
043:
044: import java.util.Set;
045: import javax.swing.Action;
046: import org.netbeans.api.project.ProjectManager;
047: import org.netbeans.modules.apisupport.project.NbModuleProject;
048: import org.netbeans.modules.apisupport.project.ProjectXMLManager;
049: import org.netbeans.modules.apisupport.project.TestBase;
050: import org.netbeans.modules.apisupport.project.ui.UnitTestLibrariesNode.RemoveDependencyAction;
051: import org.netbeans.modules.apisupport.project.universe.ModuleEntry;
052: import org.netbeans.modules.apisupport.project.universe.ModuleList;
053: import org.netbeans.modules.apisupport.project.universe.TestModuleDependency;
054: import org.openide.modules.ModuleInfo;
055: import org.openide.nodes.Node;
056: import org.openide.util.Lookup;
057:
058: /**
059: * @author Tomas Musil
060: */
061: public class UnitTestLibrariesNodeTest extends TestBase {
062: private static final String UNIT = TestModuleDependency.UNIT;
063: private static final String DEP_CNB = "org.openide.filesystems";
064: private static final String JUNIT_CNB = "org.netbeans.modules.junit";
065: private static final String NBJUNIT_CNB = "org.netbeans.modules.nbjunit";
066: private static int nc = 0; //says if junit or nbjunit is present
067:
068: public UnitTestLibrariesNodeTest(String testName) {
069: super (testName);
070: }
071:
072: //this tests if node draws subnodes
073: public void testLibrariesNodeDrawingDeps() throws Exception {
074: Lookup.getDefault().lookup(ModuleInfo.class);
075: //initial check
076: NbModuleProject p = generateStandaloneModule("module");
077: if ((p.getModuleList().getEntry(JUNIT_CNB)) != null) {
078: nc++;
079: }
080: if ((p.getModuleList().getEntry(NBJUNIT_CNB)) != null) {
081: nc++;
082: }
083:
084: Node libs = new UnitTestLibrariesNode(p);
085: assertNotNull("have the Libraries node", libs);
086: assertEquals("nc node", nc,
087: libs.getChildren().getNodes(true).length);
088:
089: //add tests dependecy
090: ProjectXMLManager pxm = new ProjectXMLManager(p);
091: addTestDependency(p);
092: ModuleList ml = p.getModuleList();
093: Set unitDeps = pxm.getTestDependencies(ml).get(
094: TestModuleDependency.UNIT);
095: assertNotNull("Have unit deps now", unitDeps);
096: assertEquals("one dep now", 1, unitDeps.size());
097: assertEquals("nc+1 nodes now", nc + 1, libs.getChildren()
098: .getNodes().length);
099:
100: //remove test dependency
101: pxm.removeTestDependency(UNIT, DEP_CNB);
102: ProjectManager.getDefault().saveProject(p);
103: assertEquals("nc nodes now", nc,
104: libs.getChildren().getNodes().length);
105: }
106:
107: //test action on node
108: public void testActions() throws Exception {
109: Lookup.getDefault().lookup(ModuleInfo.class);
110: NbModuleProject p = generateStandaloneModule("module");
111: Node libs = new UnitTestLibrariesNode(p);
112: assertNotNull("have the Libraries node", libs);
113: //test removedep action
114: addTestDependency(p);
115: String depName = p.getModuleList().getEntry(DEP_CNB)
116: .getLocalizedName();
117: Node depNode = libs.getChildren().findChild(depName);
118: assertNotNull("have a node with dependency", depNode);
119: Action[] act = depNode.getActions(false);
120: assertEquals("have three actions", 3, act.length);
121: RemoveDependencyAction removeAct = (RemoveDependencyAction) act[2];
122: assertEquals("nc+1 nodes now", nc + 1, libs.getChildren()
123: .getNodes().length);
124: removeAct.performAction(new Node[] { depNode });
125: assertEquals("nc nodes now, dep removed", nc, libs
126: .getChildren().getNodes().length);
127: }
128:
129: //TODO add more tests, try to invoke all actions on nodes, etc
130:
131: private void addTestDependency(NbModuleProject project)
132: throws Exception {
133: ProjectXMLManager pxm = new ProjectXMLManager(project);
134: ModuleList ml = project.getModuleList();
135: ModuleEntry me = ml.getEntry(DEP_CNB);
136: assertNotNull("me exist", me);
137: TestModuleDependency tmd = new TestModuleDependency(me, true,
138: true, true);
139: pxm.addTestDependency(UNIT, tmd);
140: ProjectManager.getDefault().saveProject(project);
141: }
142:
143: }
|