Merge branch 'releases/Release_2_11_4_Branch'
[jalview.git] / test / jalview / io / IdentifyFileTest.java
index dd4f6ba..1d0785e 100644 (file)
@@ -24,13 +24,15 @@ import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertSame;
 import static org.testng.AssertJUnit.assertTrue;
 
-import jalview.gui.JvOptionPane;
+import java.io.FileNotFoundException;
 
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import jalview.gui.JvOptionPane;
+
 public class IdentifyFileTest
 {
 
@@ -43,7 +45,7 @@ public class IdentifyFileTest
 
   @Test(groups = { "Functional" }, dataProvider = "identifyFiles")
   public void testIdentify(String data, FileFormatI expectedFileType)
-          throws FileFormatException
+          throws FileFormatException, FileNotFoundException
   {
     DataSourceType protocol = DataSourceType.FILE;
     IdentifyFile ider = new IdentifyFile();
@@ -58,7 +60,8 @@ public class IdentifyFileTest
    * @throws FileFormatException
    */
   @Test(groups = "Functional")
-  public void testIdentify_featureFile() throws FileFormatException
+  public void testIdentify_featureFile()
+          throws FileFormatException, FileNotFoundException
   {
     IdentifyFile ider = new IdentifyFile();
 
@@ -89,12 +92,11 @@ public class IdentifyFileTest
   @DataProvider(name = "identifyFiles")
   public Object[][] IdentifyFileDP()
   {
-    return new Object[][] {
-        { "examples/example.json", FileFormat.Json },
+    return new Object[][] { { "examples/example.json", FileFormat.Json },
         { "examples/plantfdx.fa", FileFormat.Fasta },
         { "examples/dna_interleaved.phy", FileFormat.Phylip },
         { "examples/2GIS.pdb", FileFormat.PDB },
-        { "examples/rf00031_folded.stk", FileFormat.Stockholm },
+        { "examples/RF00031_folded.stk", FileFormat.Stockholm },
         { "examples/testdata/test.rnaml", FileFormat.Rnaml },
         { "examples/testdata/test.aln", FileFormat.Clustal },
         { "examples/testdata/test.pfam", FileFormat.Pfam },
@@ -103,17 +105,18 @@ public class IdentifyFileTest
         { "examples/testdata/test.html", FileFormat.Html },
         { "examples/testdata/test.pileup", FileFormat.Pileup },
         { "examples/testdata/test.blc", FileFormat.BLC },
+        { "test/jalview/io/J03321.embl.txt", FileFormat.Embl },
+        { "test/jalview/io/J03321.gb", FileFormat.GenBank },
         { "examples/exampleFeatures.txt", FileFormat.Features },
         { "examples/testdata/simpleGff3.gff", FileFormat.Features },
         { "examples/testdata/test.jvp", FileFormat.Jalview },
         { "examples/testdata/test.cif", FileFormat.MMCif },
-        {
-            "examples/testdata/cullpdb_pc25_res3.0_R0.3_d150729_chains9361.fasta.15316",
+        { "examples/testdata/cullpdb_pc25_res3.0_R0.3_d150729_chains9361.fasta.15316",
             FileFormat.Fasta },
         { "resources/scoreModel/pam250.scm", FileFormat.ScoreMatrix },
         { "resources/scoreModel/blosum80.scm", FileFormat.ScoreMatrix }
-    // { "examples/testdata/test.amsa", "AMSA" },
-    // { "examples/test.jnet", "JnetFile" },
+        // { "examples/testdata/test.amsa", "AMSA" },
+        // { "examples/test.jnet", "JnetFile" },
     };
   }
 
@@ -126,8 +129,8 @@ public class IdentifyFileTest
     // too few columns:
     assertFalse(id.looksLikeFeatureData("1 \t 2 \t 3 \t 4 \t 5"));
     // GFF format:
-    assertTrue(id
-            .looksLikeFeatureData("Seq1\tlocal\tHelix\t2456\t2462\tss"));
+    assertTrue(
+            id.looksLikeFeatureData("Seq1\tlocal\tHelix\t2456\t2462\tss"));
     // Jalview format:
     assertTrue(id.looksLikeFeatureData("Helix\tSeq1\t-1\t2456\t2462\tss"));
     // non-numeric start column:
@@ -135,4 +138,60 @@ public class IdentifyFileTest
     // non-numeric start column:
     assertFalse(id.looksLikeFeatureData("Helix\tSeq1\t-1\t2456\t.\tss"));
   }
+
+  @Test(groups = "Network", dataProvider = "urlTargetsAndExceptions")
+  public void testExceptions(String url,
+          Class<? extends Exception> expectedExceptionClass,
+          FileFormatI expectedFormat)
+  {
+    Class<? extends Exception> actualExceptionClass = null;
+    FileFormatI actualFormat = null;
+    try
+    {
+      actualFormat = new IdentifyFile().identify(url, DataSourceType.URL);
+    } catch (FileFormatException | FileNotFoundException e)
+    {
+      Assert.assertNull(expectedFormat,
+              "Exception occurred when expecting an identifiable format.");
+      Assert.assertNotNull(expectedExceptionClass,
+              "An unexpected exception occurred: '" + e.getMessage() + "'");
+      Assert.assertEquals(e.getClass(), expectedExceptionClass,
+              "Got the wrong kind of exception.");
+      actualExceptionClass = e.getClass();
+    }
+
+    if (expectedExceptionClass != null)
+    {
+      Assert.assertEquals(actualExceptionClass, expectedExceptionClass,
+              "Expected an exception but got the wrong one.");
+    }
+
+  }
+
+  @DataProvider(name = "urlTargetsAndExceptions")
+  public Object[][] urlTargetsAndExceptions()
+  {
+    /*
+    String targetUrl,
+    String finalUrl,
+    String foundInFirstLine,
+    */
+    return new Object[][] {
+        //
+        /*
+        { "http://jalview.org/examples/uniref50.fa", null,
+            FileFormat.Fasta },
+        { "https://www.jalview.org/examples/NOFILE.fa",
+            FileNotFoundException.class, null },
+        { "https://NOSERVER.jalview.org/", FileNotFoundException.class,
+            null },
+         */
+        { "https://www.jalview.org/schools/Jalview_Schools_Workbook_200.jpg",
+            FileFormatException.class, null },
+        /*
+         */
+        //
+    };
+  }
+
 }