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: package org.netbeans.modules.xml.axi;
042:
043: import java.io.File;
044: import java.net.URL;
045: import junit.framework.*;
046: import org.netbeans.modules.xml.axi.impl.AXIModelImpl;
047: import org.netbeans.modules.xml.schema.model.SchemaModel;
048: import org.netbeans.modules.xml.xam.Model;
049: import org.openide.filesystems.FileUtil;
050:
051: /**
052: *
053: * @author Samaresh (Samaresh.Panda@Sun.Com)
054: */
055: public abstract class AbstractTestCase extends TestCase {
056:
057: //make it true if you want to see System.out.println messages.
058: public static final boolean printUnitTestResults = false;
059:
060: protected String schemaFileName;
061: protected String globalElementName;
062: protected AXIModel axiModel;
063: protected Element globalElement;
064: protected URL referenceXML;
065: protected boolean canCompareExpectedResultWithActual = true;
066:
067: /**
068: * AbstractTestCase
069: */
070: public AbstractTestCase(String testName, String schemaFileName,
071: String globalElementName) {
072: super (testName);
073: this .schemaFileName = schemaFileName;
074: this .globalElementName = globalElementName;
075: }
076:
077: protected void setUp() throws Exception {
078: loadModel(this .schemaFileName);
079: }
080:
081: protected void loadModel(String schemaFileName) throws Exception {
082: this .schemaFileName = schemaFileName;
083: this .axiModel = getModel(schemaFileName);
084: this .globalElement = findAXIGlobalElement(globalElementName);
085: String compareAgainst = schemaFileName.substring(0,
086: schemaFileName.indexOf(".xsd"))
087: + ".xml";
088: referenceXML = AbstractTestCase.class
089: .getResource(compareAgainst);
090: if (referenceXML == null) {
091: canCompareExpectedResultWithActual = false;
092: return;
093: }
094: }
095:
096: protected AXIModel getModel(String schemaFileName) throws Exception {
097: URL url = AbstractTestCase.class.getResource(schemaFileName);
098: File file = new File(url.toURI());
099: file = FileUtil.normalizeFile(file);
100: return TestCatalogModel.getDefault().getAXIModel(
101: FileUtil.toFileObject(file));
102: }
103:
104: protected void tearDown() throws Exception {
105: TestCatalogModel.getDefault().clearDocumentPool();
106: }
107:
108: protected AXIModel getAXIModel() {
109: return axiModel;
110: }
111:
112: protected SchemaModel getSchemaModel() {
113: return getAXIModel().getSchemaModel();
114: }
115:
116: protected Element findAXIGlobalElement(String name) {
117: if (name == null)
118: return null;
119:
120: for (Element e : axiModel.getRoot().getElements()) {
121: if (e.getName().equals(name)) {
122: return e;
123: }
124: }
125:
126: return null;
127: }
128:
129: protected ContentModel findContentModel(String name) {
130: for (ContentModel cm : axiModel.getRoot().getContentModels()) {
131: if (cm.getName().equals(name)) {
132: return cm;
133: }
134: }
135:
136: return null;
137: }
138:
139: protected void validateSchema(SchemaModel sm) {
140: boolean status = ((AXIModelImpl) getAXIModel()).getState() == Model.State.VALID;//((AXIModelImpl)getAXIModel()).validate();
141: assertTrue("Schema Validation failed", status);
142: }
143:
144: public final void print(String message) {
145: if (printUnitTestResults) {
146: System.out.println(message);
147: }
148: }
149: }
|