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.tax;
042:
043: import java.io.File;
044: import java.io.IOException;
045: import java.util.Iterator;
046: import junit.textui.TestRunner;
047: import org.netbeans.modules.xml.XMLDataObject;
048: import org.netbeans.modules.xml.tax.cookies.TreeEditorCookie;
049: import org.netbeans.tests.xml.XTest;
050: import org.openide.cookies.CloseCookie;
051: import org.openide.filesystems.FileSystem;
052: import org.openide.loaders.DataFolder;
053:
054: /**
055: * <P>
056: * <P>
057: * <FONT COLOR="#CC3333" FACE="Courier New, Monospaced" SIZE="+1">
058: * <B>
059: * <BR> XML Module API Test: Encoding Test
060: * </B>
061: * </FONT>
062: * <BR><BR><B>What it tests:</B><BR>
063: * Tests check whether the documents saved with different encodings are identical.<BR>
064: *
065: * <BR><B>How it works:</B><BR>
066: * Test doing for each encoding:<BR>
067: * - save document with selected encoding<BR>
068: * - close the document<BR>
069: * - reload the document from disk<BR>
070: * - check if the reloaded document and the original are identical<BR>
071: *
072: * <BR><BR><B>Settings:</B><BR>
073: * None
074: *
075: * <BR><BR><B>Output (Golden file):</B><BR>
076: * DTD for the XML document.<BR>
077: * <BR><B>Possible reasons of failure:</B>
078: * <UL>
079: * <LI type="circle">
080: * <I>None<BR></I>
081: * </LI>
082: * </UL>
083: * <P>
084: */
085:
086: public class EncodingTest extends XTest {
087: /** Creates new CoreSettingsTest */
088: public EncodingTest(String testName) {
089: super (testName);
090: }
091:
092: public void testEncoding() throws Exception {
093: final String DATA_OBJECT = "encoding.xml";
094: final String NDATA_OBJECT = "newEncoding.xml";
095: TreeEditorCookie cake;
096:
097: // prepare data
098: XMLDataObject original = (XMLDataObject) TestUtil.THIS
099: .findData(DATA_OBJECT);
100: if (original == null) {
101: fail("\"" + DATA_OBJECT + "\" data object not found!");
102: }
103: cake = (TreeEditorCookie) original
104: .getCookie(TreeEditorCookie.class);
105: TreeElement docRoot = ((TreeDocument) cake.openDocumentRoot())
106: .getDocumentElement();
107: String defEncoding = cake.getDocumentRoot().getEncoding();
108: String gString = TestUtil.THIS.nodeToString(docRoot);
109: Iterator encodings = TreeUtilities.getSupportedEncodings()
110: .iterator();
111:
112: // prepare workdir
113: File workDir = getWorkDir();
114: try {
115: clearWorkDir();
116: } catch (IOException ex) {
117: log("clearWorkDir() throws: " + ex);
118: }
119:
120: FileSystem fs = TestUtil.THIS.mountDirectory(workDir);
121: DataFolder dataFolder = DataFolder.findFolder(fs.getRoot());
122:
123: while (encodings.hasNext()) {
124: String encoding = (String) encodings.next();
125: String fileName = encoding + ".xml";
126: try {
127: dbg.println("Testing encoding: " + encoding + " ... ");
128: if (encoding.equals(defEncoding))
129: break; // Nothing to test.
130:
131: // create new document, set encoding, save and close it
132: XMLDataObject xdao = (XMLDataObject) original
133: .createFromTemplate(dataFolder, encoding);
134: cake = (TreeEditorCookie) xdao
135: .getCookie(TreeEditorCookie.class);
136: TreeDocument newDoc = (TreeDocument) cake
137: .openDocumentRoot();
138: newDoc.setEncoding(encoding);
139: TestUtil.THIS.saveDataObject(xdao);
140: CloseCookie cc = (CloseCookie) xdao
141: .getCookie(CloseCookie.class);
142: cc.close();
143:
144: // read the document and check his content
145: cake = (TreeEditorCookie) xdao
146: .getCookie(TreeEditorCookie.class);
147: TreeElement newRoot = ((TreeDocument) cake
148: .getDocumentRoot()).getDocumentElement();
149: String nString = TestUtil.THIS.nodeToString(newRoot);
150: assertEquals("Encoding: " + encoding
151: + ", documents are differ", gString, nString);
152: } catch (Exception ex) {
153: ex.printStackTrace(dbg);
154: fail("Encoding: " + encoding + ", test faill due:\n"
155: + ex);
156: }
157: }
158: }
159:
160: /**
161: * Performs this testsuite.
162: * @param args the command line arguments
163: */
164: public static void main(String args[]) throws Exception {
165: DEBUG = true;
166: TestRunner.run(EncodingTest.class);
167: }
168: }
|