1 package jester; 2 3 import java.io.*; 4 import java.util.StringTokenizer ; 5 6 public class RealMutationsList implements MutationsList { 7 public static final String DEFAULT_MUTATIONS_FILENAME = "mutations.cfg"; 8 9 private String myFileName; 10 private PrintStream myErrorStream; 11 12 public RealMutationsList(String fileName, PrintStream errorStream) { 13 super(); 14 myFileName = fileName; 15 myErrorStream = errorStream; 16 } 17 public RealMutationsList(String fileName) { 18 this(fileName, System.err); 19 } 20 public void visit(BufferedReader aBufferedReader, MutationMaker aMutationMaker) throws IOException, SourceChangeException { 21 String line = aBufferedReader.readLine(); 22 while (line != null) { 23 visitLine(line, aMutationMaker); 24 line = aBufferedReader.readLine(); 25 } 26 } 27 public void visit(MutationMaker aMutationMaker) throws SourceChangeException { 28 try { 29 InputStream mutationsFile = ClassLoader.getSystemResourceAsStream(myFileName); 30 if (mutationsFile == null) { 31 myErrorStream.println("Warning - could not find "+DEFAULT_MUTATIONS_FILENAME+" so using default mutations."); 32 aMutationMaker.mutate("true", "false"); 33 aMutationMaker.mutate("false", "true"); 34 aMutationMaker.mutate("if(", "if(true ||"); 35 aMutationMaker.mutate("if (", "if (true ||"); 36 aMutationMaker.mutate("if(", "if(false &&"); 37 aMutationMaker.mutate("if (", "if (false &&"); 38 aMutationMaker.mutate("==", "!="); 39 aMutationMaker.mutate("!=", "=="); 40 } else { 41 BufferedReader aBufferedReader = new BufferedReader(new InputStreamReader(mutationsFile)); 42 43 visit(aBufferedReader, aMutationMaker); 44 } 45 } catch (IOException ex) { 46 throw new SourceChangeException("could not visit mutations " + ex); 47 } 48 } 49 private void visitLine(String line, MutationMaker aMutationMaker) throws SourceChangeException { 50 if(line.length() == 0){ 51 return; 52 } 53 String delimiter = line.substring(0, 1); 54 StringTokenizer aStringTokenizer = new StringTokenizer (line.substring(1), delimiter, false); 55 int numberOfItems = 2; 56 String [] strings = new String [numberOfItems]; 57 int i = 0; 58 while (i < numberOfItems && aStringTokenizer.hasMoreTokens()) { 59 String s = aStringTokenizer.nextToken(); 60 strings[i] = s; 61 i++; 62 } 63 if (i != numberOfItems) { 64 return; 65 } 66 aMutationMaker.mutate(strings[0], strings[1]); 67 } 68 } | Popular Tags |