JAL-3949 - refactor logging from jalview.bin.Cache to jalview.bin.Console
[jalview.git] / test / jalview / io / FileIOTester.java
index 2d572fe..b693d51 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.io;
 
-import static org.junit.Assert.*;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
 
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringBufferInputStream;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import jalview.bin.Console;
+import jalview.gui.JvOptionPane;
 
 /**
  * @author jimp
- *
+ * 
  */
 public class FileIOTester
 {
 
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   /**
    * @throws java.lang.Exception
    */
-  @BeforeClass
+  @BeforeClass(alwaysRun = true)
   public static void setUpBeforeClass() throws Exception
   {
+    Console.initLogger();
   }
 
   /**
    * @throws java.lang.Exception
    */
-  @AfterClass
+  @AfterClass(alwaysRun = true)
   public static void tearDownAfterClass() throws Exception
   {
   }
+
   // TODO: make a better/more comprehensive test harness for identify/io
-  
-  final static File ALIGN_FILE = new File("test/jalview/io/test_gz_fasta.gz");
-  final static File NOTGZALIGN_FILE = new File("test/jalview/io/test_gz_fasta_notgz.gz");
-  final static File STARS_FA_FILE1 = new File("test/jalview/io/test_fasta_stars.fa");
-  final static File STARS_FA_FILE2 = new File("test/jalview/io/test_fasta_stars2.fa");
 
-  private void assertValidFormat(String fmt, String src, FileParse fp)
+  final static File ALIGN_FILE = new File(
+          "test/jalview/io/test_gz_fasta.gz");
+
+  final static File NOTGZALIGN_FILE = new File(
+          "test/jalview/io/test_gz_fasta_notgz.gz");
+
+  final static File STARS_FA_FILE1 = new File(
+          "test/jalview/io/test_fasta_stars.fa");
+
+  final static File STARS_FA_FILE2 = new File(
+          "test/jalview/io/test_fasta_stars2.fa");
+
+  private void assertValidFormat(FileFormatI fmt, String src, FileParse fp)
+          throws FileFormatException
   {
-    assertTrue("Couldn't resolve "+src+" as a valid file",fp.isValid());
-    String type = new IdentifyFile().Identify(fp);
-    assertTrue("Data from '"+src+"' Expected to be '"+fmt+"' identified as '"+type+"'",type.equalsIgnoreCase(fmt));
+    AssertJUnit.assertTrue("Couldn't resolve " + src + " as a valid file",
+            fp.isValid());
+    FileFormatI type = new IdentifyFile().identify(fp);
+    AssertJUnit.assertSame("Data from '" + src + "' Expected to be '" + fmt
+            + "' identified as '" + type + "'", type, fmt);
   }
-  @Test
+
+  @Test(groups = { "Functional" })
   public void testStarsInFasta1() throws IOException
   {
     String uri;
-    FileParse fp = new FileParse(uri=STARS_FA_FILE1.getAbsoluteFile().toString(),AppletFormatAdapter.FILE);
-    assertValidFormat("FASTA", uri, fp);
+    FileParse fp = new FileParse(
+            uri = STARS_FA_FILE1.getAbsoluteFile().toString(),
+            DataSourceType.FILE);
+    assertValidFormat(FileFormat.Fasta, uri, fp);
   }
-  @Test
+
+  @Test(groups = { "Functional" })
   public void testStarsInFasta2() throws IOException
   {
     String uri;
-    FileParse fp = new FileParse(uri=STARS_FA_FILE2.getAbsoluteFile().toString(),AppletFormatAdapter.FILE);
-    assertValidFormat("FASTA", uri, fp);
+    FileParse fp = new FileParse(
+            uri = STARS_FA_FILE2.getAbsoluteFile().toString(),
+            DataSourceType.FILE);
+    assertValidFormat(FileFormat.Fasta, uri, fp);
   }
-  @Test
+
+  @Test(groups = { "Functional" })
   public void testGzipIo() throws IOException
-  {     
+  {
     String uri;
-    FileParse fp = new FileParse(uri=ALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL);
-    assertValidFormat("FASTA", uri, fp);
+    FileParse fp = new FileParse(
+            uri = ALIGN_FILE.getAbsoluteFile().toURI().toString(),
+            DataSourceType.URL);
+    assertValidFormat(FileFormat.Fasta, uri, fp);
   }
 
-  @Test
+  @Test(groups = { "Functional" })
   public void testGziplocalFileIO() throws IOException
   {
     String filepath;
-    FileParse fp = new FileParse(filepath=ALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE);
-    assertValidFormat("FASTA",filepath, fp);
+    FileParse fp = new FileParse(
+            filepath = ALIGN_FILE.getAbsoluteFile().toString(),
+            DataSourceType.FILE);
+    assertValidFormat(FileFormat.Fasta, filepath, fp);
   }
-  @Test
+
+  @Test(groups = { "Functional" })
+  public void testIsGzipInputStream() throws IOException
+  {
+    InputStream is = new FileInputStream(ALIGN_FILE);
+    
+    /*
+     * first try fails - FileInputStream does not support mark/reset
+     */
+    assertFalse(FileParse.isGzipStream(is));
+    
+    /*
+     * wrap in a BufferedInputStream and try again
+     */
+    is = new BufferedInputStream(is, 16);
+    assertTrue(FileParse.isGzipStream(is));
+    
+    /*
+     * check recognition of non-gzipped input
+     */
+    assertFalse(FileParse.isGzipStream(new BufferedInputStream(
+            new ByteArrayInputStream("NOT A GZIP".getBytes()))));    
+  }
+
+  @Test(groups = { "Functional" })
   public void testNonGzipURLIO() throws IOException
   {
     String uri;
-    FileParse fp = new FileParse(uri=NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL);
-    assertValidFormat("FASTA",uri, fp);
+    FileParse fp = new FileParse(
+            uri = NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(),
+            DataSourceType.URL);
+    assertValidFormat(FileFormat.Fasta, uri, fp);
   }
-  @Test
+
+  @Test(groups = { "Functional" })
   public void testNonGziplocalFileIO() throws IOException
   {
     String filepath;
-    FileParse fp = new FileParse(filepath=NOTGZALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE);
-    assertValidFormat("FASTA",filepath, fp);
+    FileParse fp = new FileParse(
+            filepath = NOTGZALIGN_FILE.getAbsoluteFile().toString(),
+            DataSourceType.FILE);
+    assertValidFormat(FileFormat.Fasta, filepath, fp);
   }
 }