Package tests.net.sf.jabref

Source Code of tests.net.sf.jabref.FileBasedTestCase

package tests.net.sf.jabref;

import java.io.File;
import java.io.StringReader;

import junit.framework.TestCase;
import net.sf.jabref.BibtexDatabase;
import net.sf.jabref.BibtexEntry;
import net.sf.jabref.Globals;
import net.sf.jabref.JabRefPreferences;
import net.sf.jabref.imports.BibtexParser;
import net.sf.jabref.imports.ParserResult;

/**
* A base class for Testing in JabRef that comes along with some useful
* functions.
*
* @author $Author: coezbek $
* @version $Revision: 2092 $ ($Date: 2007-05-31 01:53:37 +0200 (Thu, 31 May 2007) $)
*
*/
public class FileBasedTestCase extends TestCase {

  /**
   * Will check if two paths are the same.
   */
  public static void assertEqualPaths(String path1, String path2) {

    if (path1 == path2)
      return;

    if ((path1 == null || path2 == null) && path1 != path2)
      fail("Expected: " + path1 + " but was: " + path2);

    assertEquals(path1.replaceAll("\\\\", "/"), path2.replaceAll("\\\\", "/"));
  }

  /**
   * Creates a temp directory in the System temp directory.
   *
   * Taken from
   * http://forum.java.sun.com/thread.jspa?threadID=470197&messageID=2169110
   *
   * Author: jfbriere
   *
   * @return returns null if directory could not created.
   */
  public static File createTempDir(String prefix) {
    return createTempDir(prefix, null);
  }

  /**
   * Creates a temp directory in a given directory.
   *
   * Taken from
   * http://forum.java.sun.com/thread.jspa?threadID=470197&messageID=2169110
   *
   * Author: jfbriere
   *
   * @param directory
   *            MayBeNull - null indicates that the system tmp directory
   *            should be used.
   *
   * @return returns null if directory could not created.
   */
  public static File createTempDir(String prefix, File directory) {
    try {
      File tempFile = File.createTempFile(prefix, "", directory);

      if (!tempFile.delete())
        return null;
      if (!tempFile.mkdir())
        return null;

      return tempFile;

    } catch (Exception e) {
      return null;
    }
  }

  /**
   * Deletes a directory or file
   *
   * Taken from
   * http://forum.java.sun.com/thread.jspa?threadID=470197&messageID=2169110
   *
   * Author: jfbriere
   *
   * @param file
   */
  public static void deleteRecursive(File file) {
    if (file.isDirectory()) {
      File[] fileArray = file.listFiles();

      if (fileArray != null)
        for (int i = 0; i < fileArray.length; i++)
          deleteRecursive(fileArray[i]);
    }
    file.delete();
  }

  static BibtexDatabase database;

  static BibtexEntry entry;

  File root;

  private String oldPdfDirectory;

  private boolean oldUseRegExp;

  public static BibtexEntry getBibtexEntry() {

    if (database == null) {

      StringReader reader = new StringReader(
        "@ARTICLE{HipKro03,\n"
          + "  author = {Eric von Hippel and Georg von Krogh},\n"
          + "  title = {Open Source Software and the \"Private-Collective\" Innovation Model: Issues for Organization Science},\n"
          + "  journal = {Organization Science},\n"
          + "  year = {2003},\n"
          + "  volume = {14},\n"
          + "  pages = {209--223},\n"
          + "  number = {2},\n"
          + "  address = {Institute for Operations Research and the Management Sciences (INFORMS), Linthicum, Maryland, USA},\n"
          + "  doi = {http://dx.doi.org/10.1287/orsc.14.2.209.14992}," + "\n"
          + "  issn = {1526-5455}," + "\n" + "  publisher = {INFORMS}\n" + "}");

      BibtexParser parser = new BibtexParser(reader);
      ParserResult result = null;
      try {
        result = parser.parse();
      } catch (Exception e) {
        fail();
      }
      database = result.getDatabase();
      entry = database.getEntriesByKey("HipKro03")[0];
    }
    return entry;
  }

  public void setUp() throws Exception {

    Globals.prefs = JabRefPreferences.getInstance();
    oldUseRegExp = Globals.prefs.getBoolean(JabRefPreferences.USE_REG_EXP_SEARCH_KEY);
    oldPdfDirectory = Globals.prefs.get("pdfDirectory");

    Globals.prefs.putBoolean(JabRefPreferences.USE_REG_EXP_SEARCH_KEY, false);
   
    getBibtexEntry();
    assertNotNull(database);
    assertNotNull(entry);

    // Create file structure
    try {
      root = createTempDir("UtilFindFileTest");

      Globals.prefs.put("pdfDirectory", root.getPath());
   
      File subDir1 = new File(root, "Organization Science");
      subDir1.mkdir();

      File pdf1 = new File(subDir1, "HipKro03 - Hello.pdf");
      pdf1.createNewFile();

      File pdf1a = new File(root, "HipKro03 - Hello.pdf");
      pdf1a.createNewFile();

      File subDir2 = new File(root, "pdfs");
      subDir2.mkdir();

      File subsubDir1 = new File(subDir2, "sub");
      subsubDir1.mkdir();

      File pdf2 = new File(subsubDir1, "HipKro03-sub.pdf");
      pdf2.createNewFile();

      File dir2002 = new File(root, "2002");
      dir2002.mkdir();

      File dir2003 = new File(root, "2003");
      dir2003.mkdir();

      File pdf3 = new File(dir2003, "Paper by HipKro03.pdf");
      pdf3.createNewFile();

      File dirTest = new File(root, "test");
      dirTest.mkdir();

      File pdf4 = new File(dirTest, "HipKro03.pdf");
      pdf4.createNewFile();

      File pdf5 = new File(dirTest, ".TEST");
      pdf5.createNewFile();

      File pdf6 = new File(dirTest, "TEST[");
      pdf6.createNewFile();

      File pdf7 = new File(dirTest, "TE.ST");
      pdf7.createNewFile();

      File foo = new File(dirTest, "foo.dat");
      foo.createNewFile();
     
      File graphicsDir = new File(root, "graphicsDir");
      graphicsDir.mkdir();
     
      File graphicsSubDir = new File(graphicsDir, "subDir");
      graphicsSubDir.mkdir();
     
      File jpg = new File(graphicsSubDir, "testHipKro03test.jpg");
      jpg.createNewFile();

      File png = new File(graphicsSubDir, "testHipKro03test.png");
      png.createNewFile();
     
    } catch (Exception e) {
      throw new RuntimeException();
    }
  }

  public void tearDown() {
    deleteRecursive(root);
    Globals.prefs.putBoolean(JabRefPreferences.USE_REG_EXP_SEARCH_KEY, oldUseRegExp);
    Globals.prefs.put("pdfDirectory", oldPdfDirectory);
    // TODO: This is not a great way to do this, sure ;-)
  }
 
  public void testVoid(){
    // to remove warning
  }
 
}
TOP

Related Classes of tests.net.sf.jabref.FileBasedTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.