/* * Cobertura - http://cobertura.sourceforge.net/ * * Copyright (C) 2005 James Seigel * Copyright (C) 2005 Grzegorz Lukasik * Copyright (C) 2008 John Lewis * * Cobertura is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Cobertura is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Cobertura; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ package net.sourceforge.cobertura.util; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; // Creates structre: // src0/ // com/ // example/ // Sample1.java (contains a @Deprecated annotation to make sure the complexity works with annotations) // Sample2.java // src1/ // com/ // example/ // Sample3.java // Sample4.java // src2/ // com/ // example/ // Sample5.java // Sample6.java // src3/ // com/ // example/ // Sample7.java // Sample8.java public class FileFixture { public static final String[] SOURCE_DIRECTORY_IDENTIFIER = { "src0", "src1", "src2", "src3" }; public HashMap sourceDirectories; public void setUp() throws IOException { File tempFile = File.createTempFile("temp", ".tmp"); tempFile.deleteOnExit(); sourceDirectories = new HashMap(); for( int i=0; i<SOURCE_DIRECTORY_IDENTIFIER.length; i++) { File directory = new File(tempFile.getParent(), SOURCE_DIRECTORY_IDENTIFIER[i]); directory.mkdir(); filesUnderSourceDir(directory, 1+i*2); sourceDirectories.put(SOURCE_DIRECTORY_IDENTIFIER[i], directory); } } private void filesUnderSourceDir(File srcDirectory, int number) throws IOException, FileNotFoundException { File sub = new File(srcDirectory, "com"); sub.mkdir(); File temp = new File(sub, "example"); temp.mkdir(); File sample1 = new File(temp, "Sample" + number + ".java"); sample1.createNewFile(); FileWriter writer1 = new FileWriter(sample1); writer1.write( "package com.example;\n"); writer1.write( "public class Sample" + number + " {\n"); /* * Add an annotation to make sure the complexity works with them */ if (number == 1) { writer1.write( "@Deprecated\n"); } writer1.write( " public void someMethod(int v) {\n"); writer1.write( " if(v<0) System.out.println();\n"); writer1.write( " else System.out.println('x');\n"); writer1.write( " }\n"); writer1.write( "}\n"); writer1.close(); File sample2 = new File(temp, "Sample" + (number + 1) + ".java"); sample2.createNewFile(); FileWriter writer2 = new FileWriter(sample2); writer2.write( "package com.example;\n"); writer2.write( "class Sample" + (number + 1) + " {\n"); writer2.write( " private String otherMethod() {\n"); writer2.write( " return \"OtherValue\";\n"); writer2.write( " }\n"); writer2.write( "}\n"); writer2.close(); } protected void deleteTree(File fileRoot) { if (fileRoot.isFile()) { fileRoot.delete(); return; } File[] files = fileRoot.listFiles(); for (int i = 0; i < files.length; i++) { deleteTree(files[i]); } fileRoot.delete(); } public void tearDown() { for( int i=0; i<SOURCE_DIRECTORY_IDENTIFIER.length; i++) { deleteTree(sourceDirectory(SOURCE_DIRECTORY_IDENTIFIER[i])); } } public File sourceDirectory(String directoryIdentifier) { return (File) sourceDirectories.get(directoryIdentifier); } }