001: //This class is automatically generated - DO NOT MODIFY (ever)
002: /*
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
004: *
005: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
006: *
007: * The contents of this file are subject to the terms of either the GNU
008: * General Public License Version 2 only ("GPL") or the Common
009: * Development and Distribution License("CDDL") (collectively, the
010: * "License"). You may not use this file except in compliance with the
011: * License. You can obtain a copy of the License at
012: * http://www.netbeans.org/cddl-gplv2.html
013: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
014: * specific language governing permissions and limitations under the
015: * License. When distributing the software, include this License Header
016: * Notice in each file and include the License file at
017: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
018: * particular file as subject to the "Classpath" exception as provided
019: * by Sun in the GPL Version 2 section of the License file that
020: * accompanied this code. If applicable, add the following below the
021: * License Header, with the fields enclosed by brackets [] replaced by
022: * your own identifying information:
023: * "Portions Copyrighted [year] [name of copyright owner]"
024: *
025: * Contributor(s):
026: *
027: * The Original Software is NetBeans. The Initial Developer of the Original
028: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
029: * Microsystems, Inc. All Rights Reserved.
030: *
031: * If you wish your version of this file to be governed by only the CDDL
032: * or only the GPL Version 2, indicate your decision by adding
033: * "[Contributor] elects to include this software in this distribution
034: * under the [CDDL or GPL Version 2] license." If you do not indicate a
035: * single choice of license, a recipient has the option to distribute
036: * your version of this file under either the CDDL, the GPL Version 2 or
037: * to extend the choice of license to its licensees as provided above.
038: * However, if you add GPL Version 2 code and therefore, elected the GPL
039: * Version 2 license, then the option applies only if the new code is
040: * made subject to such option by the copyright holder.
041: */
042: package org.netbeans.test.java.editor.completion;
043:
044: import java.io.BufferedReader;
045: import java.io.PrintWriter;
046: import org.netbeans.junit.NbTestCase;
047: import org.netbeans.junit.NbTestSuite;
048: import org.netbeans.jellytools.JellyTestCase;
049: import org.netbeans.test.editor.LineDiff;
050: import java.io.File;
051: import java.io.FileReader;
052: import java.io.FileReader;
053: import java.io.FileWriter;
054: import java.io.IOException;
055: import org.netbeans.spi.editor.completion.CompletionProvider;
056:
057: /**This class is automatically generated from <I>config.txt</I> using bash
058: * script <I>create</I>. For any changes, change the code generating script
059: * and re-generate.
060: *
061: * Althought this class is runned as a test, there is no real code. This class
062: * is only wrapper between xtest and harness independet test code. Main information
063: * source is <B>CompletionTest</B> class ({@link CompletionTest}).
064: *
065: * @see CompletionTest
066: */
067: public class CompletionTestPerformer extends NbTestCase {
068:
069: // automatic generation of golden files
070: protected boolean generateGoledFiles = false;
071:
072: protected PrintWriter outputWriter = null;
073:
074: protected PrintWriter logWriter = null;
075:
076: /** Need to be defined because of JUnit */
077: public CompletionTestPerformer(String name) {
078: super (name);
079: }
080:
081: protected void setUp() {
082: log("CompletionTestPerformer.setUp started.");
083: outputWriter = new PrintWriter(getRef());
084: logWriter = new PrintWriter(getLog());
085: log("CompletionTestPerformer.setUp finished.");
086: log("Test " + getName() + "started");
087: }
088:
089: protected void tearDown() throws Exception {
090: log("Test " + getName() + " finished");
091: log("CompletionTestPerformer.tearDown");
092: outputWriter.flush();
093: String goldenName = getJDKVersionCode() + "-" + getName()
094: + ".pass";
095: File ref = new File(getWorkDir(), this .getName() + ".ref");
096: if (generateGoledFiles) {
097: BufferedReader br = null;
098: FileWriter fw = null;
099: try {
100: String newGoldenName = "data/goldenfiles/"
101: + this .getClass().getName().replace('.', '/')
102: + "/" + goldenName;
103: File newGolden = new File(getDataDir().getParentFile()
104: .getParentFile().getParentFile(), newGoldenName);
105: newGolden.getParentFile().mkdirs();
106: br = new BufferedReader(new FileReader(ref));
107: fw = new FileWriter(newGolden);
108: getLog().println(
109: "Creating golden file " + newGolden.getName()
110: + " in " + newGolden.getAbsolutePath());
111: String s;
112: while ((s = br.readLine()) != null)
113: fw.write(s + "\n");
114: } catch (IOException ioe) {
115: fail(ioe.getMessage());
116: } finally {
117: try {
118: if (fw != null)
119: fw.close();
120: if (br != null)
121: br.close();
122: } catch (IOException ioe) {
123: fail(ioe.getMessage());
124: }
125: }
126: fail("Generating golden files");
127: }
128: File golden = getGoldenFile(goldenName);
129: File diff = new File(getWorkDir(), this .getName() + ".diff");
130: logWriter.flush();
131: assertFile("Output does not match golden file.", golden, ref,
132: diff, new LineDiff(false));
133:
134: }
135:
136: private String getJDKVersionCode() {
137: String specVersion = System.getProperty("java.version");
138:
139: if (specVersion.startsWith("1.4"))
140: return "jdk14";
141:
142: if (specVersion.startsWith("1.5"))
143: return "jdk15";
144:
145: if (specVersion.startsWith("1.6"))
146: return "jdk16";
147:
148: throw new IllegalStateException("Specification version: "
149: + specVersion + " not recognized.");
150: }
151:
152: private File resolveGoldenFile(String proposedGoldenFileName) {
153: if ("@".equals(proposedGoldenFileName.trim()))
154: return getGoldenFile(getJDKVersionCode() + "-" + getName()
155: + ".pass");
156: else
157: return getGoldenFile(getJDKVersionCode() + "-"
158: + proposedGoldenFileName + ".pass");
159: }
160:
161: }
|