1 20 package org.netbeans.test.java.editor.completion; 21 import java.io.BufferedReader ; 22 import java.io.PrintWriter ; 23 import org.netbeans.junit.NbTestCase; 24 import org.netbeans.junit.NbTestSuite; 25 import org.netbeans.jellytools.JellyTestCase; 26 import org.netbeans.test.editor.LineDiff; 27 import java.io.File ; 28 import java.io.FileReader ; 29 import java.io.FileReader ; 30 import java.io.FileWriter ; 31 import java.io.IOException ; 32 import org.netbeans.spi.editor.completion.CompletionProvider; 33 34 44 public class CompletionTestPerformer extends NbTestCase { 45 46 47 protected boolean generateGoledFiles = false; 49 50 protected PrintWriter outputWriter = null; 51 52 protected PrintWriter logWriter = null; 53 54 55 public CompletionTestPerformer(String name) { 56 super(name); 57 } 58 59 protected void setUp() { 60 log("CompletionTestPerformer.setUp started."); 61 outputWriter = new PrintWriter (getRef()); 62 logWriter = new PrintWriter (getLog()); 63 log("CompletionTestPerformer.setUp finished."); 64 log("Test "+getName()+ "started"); 65 } 66 67 68 protected void tearDown() throws Exception { 69 log("Test "+getName()+" finished"); 70 log("CompletionTestPerformer.tearDown"); 71 outputWriter.flush(); 72 String goldenName = getJDKVersionCode() + "-" + getName() + ".pass"; 73 File ref = new File (getWorkDir(), this.getName() + ".ref"); 74 if(generateGoledFiles) { 75 BufferedReader br = null; 76 FileWriter fw = null; 77 try { 78 String newGoldenName = "data/goldenfiles/"+this.getClass().getName().replace('.', '/')+ "/" + goldenName; 79 File newGolden = new File (getDataDir().getParentFile().getParentFile().getParentFile(),newGoldenName); 80 newGolden.getParentFile().mkdirs(); 81 br = new BufferedReader (new FileReader (ref)); 82 fw = new FileWriter (newGolden); 83 getLog().println("Creating golden file "+newGolden.getName()+" in "+newGolden.getAbsolutePath()); 84 String s; 85 while((s=br.readLine())!=null) fw.write(s+"\n"); 86 } catch (IOException ioe) { 87 fail(ioe.getMessage()); 88 } finally { 89 try { 90 if(fw!=null) fw.close(); 91 if(br!=null) br.close(); 92 } catch (IOException ioe) { 93 fail(ioe.getMessage()); 94 } 95 } 96 fail("Generating golden files"); 97 } 98 File golden = getGoldenFile(goldenName); 99 File diff = new File (getWorkDir(), this.getName() + ".diff"); 100 logWriter.flush(); 101 assertFile("Output does not match golden file.", golden, ref, diff, new LineDiff(false)); 102 103 } 104 private String getJDKVersionCode() { 105 String specVersion = System.getProperty("java.version"); 106 107 if (specVersion.startsWith("1.4")) 108 return "jdk14"; 109 110 if (specVersion.startsWith("1.5")) 111 return "jdk15"; 112 113 if (specVersion.startsWith("1.6")) 114 return "jdk16"; 115 116 throw new IllegalStateException ("Specification version: " + specVersion + " not recognized."); 117 } 118 119 private File resolveGoldenFile(String proposedGoldenFileName) { 120 if ("@".equals(proposedGoldenFileName.trim())) 121 return getGoldenFile(getJDKVersionCode() + "-" + getName() + ".pass"); 122 else 123 return getGoldenFile(getJDKVersionCode() + "-" + proposedGoldenFileName + ".pass"); 124 } 125 126 } 127 | Popular Tags |