JAL-4021 todo & fix FileFormat tests
[jalview.git] / test / jalview / io / FileFormatsTest.java
index 8df228f..3d2c316 100644 (file)
@@ -1,5 +1,27 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.io;
 
+import java.util.Locale;
+
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotEquals;
@@ -10,28 +32,40 @@ import static org.testng.Assert.assertTrue;
 import java.util.Iterator;
 
 import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 public class FileFormatsTest
 {
-  @AfterMethod()
+  @AfterMethod(alwaysRun = true)
   public void tearDown()
   {
     FileFormats.getInstance().reset();
   }
 
+  @BeforeMethod(alwaysRun = true)
+  public void setUp()
+  {
+    FileFormats.getInstance().reset();
+  }
+
   @Test(groups = "Functional")
-  public void testIsDynamic()
+  public void testIsIdentifiable()
   {
     FileFormats formats = FileFormats.getInstance();
-    for (FileFormatI ff : FileFormat.values())
-    {
-      assertFalse(formats.isIdentifiable(ff));
-    }
-    assertTrue(formats.isIdentifiable(null));
+    assertTrue(formats
+            .isIdentifiable(formats.forName(FileFormat.Fasta.getName())));
+    assertTrue(formats
+            .isIdentifiable(formats.forName(FileFormat.MMCif.getName())));
+    assertTrue(formats
+            .isIdentifiable(formats.forName(FileFormat.Jnet.getName())));
+    assertTrue(formats
+            .isIdentifiable(formats.forName(FileFormat.Jalview.getName())));
+    // GenBank/ENA
+    assertFalse(formats.isIdentifiable(null));
 
     /*
-     * remove and re-add a format: it is now considered 'dynamically added'
+     * remove and re-add a format: it is still 'identifiable'
      */
     formats.deregisterFileFormat(FileFormat.Fasta.getName());
     assertNull(formats.forName(FileFormat.Fasta.getName()));
@@ -44,7 +78,7 @@ public class FileFormatsTest
   @Test(groups = "Functional")
   public void testGetReadableFormats()
   {
-    String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
+    String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, PhyloXML]";
     FileFormats formats = FileFormats.getInstance();
     assertEquals(formats.getReadableFormats().toString(), expected);
   }
@@ -63,14 +97,14 @@ public class FileFormatsTest
   public void testDeregisterFileFormat()
   {
     String writable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
-    String readable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
+    String readable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, PhyloXML]";
     FileFormats formats = FileFormats.getInstance();
     assertEquals(formats.getWritableFormats(true).toString(), writable);
     assertEquals(formats.getReadableFormats().toString(), readable);
 
     formats.deregisterFileFormat(FileFormat.Fasta.getName());
     writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
-    readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
+    readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, PhyloXML]";
     assertEquals(formats.getWritableFormats(true).toString(), writable);
     assertEquals(formats.getReadableFormats().toString(), readable);
 
@@ -79,7 +113,7 @@ public class FileFormatsTest
      */
     formats.registerFileFormat(FileFormat.Fasta);
     writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Fasta]";
-    readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview, Fasta]";
+    readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, PhyloXML, Fasta]";
     assertEquals(formats.getWritableFormats(true).toString(), writable);
     assertEquals(formats.getReadableFormats().toString(), readable);
   }
@@ -91,8 +125,10 @@ public class FileFormatsTest
     for (FileFormatI ff : FileFormat.values())
     {
       assertSame(ff, formats.forName(ff.getName()));
-      assertSame(ff, formats.forName(ff.getName().toUpperCase()));
-      assertSame(ff, formats.forName(ff.getName().toLowerCase()));
+      assertSame(ff,
+              formats.forName(ff.getName().toUpperCase(Locale.ROOT)));
+      assertSame(ff,
+              formats.forName(ff.getName().toLowerCase(Locale.ROOT)));
     }
     assertNull(formats.forName(null));
     assertNull(formats.forName("rubbish"));
@@ -104,7 +140,7 @@ public class FileFormatsTest
     FileFormats formats = FileFormats.getInstance();
     assertSame(FileFormat.MMCif,
             formats.forName(FileFormat.MMCif.getName()));
-    assertFalse(formats.isIdentifiable(FileFormat.MMCif));
+    assertTrue(formats.isIdentifiable(FileFormat.MMCif));
 
     /*
      * deregister mmCIF format
@@ -114,7 +150,7 @@ public class FileFormatsTest
 
     /*
      * re-register mmCIF format
-     * it is reinstated (but now classed as 'dynamic')
+     * it is reinstated (still 'identifiable')
      */
     formats.registerFileFormat(FileFormat.MMCif);
     assertSame(FileFormat.MMCif,
@@ -133,8 +169,7 @@ public class FileFormatsTest
      * verify the list of file formats registered matches the enum values
      */
     FileFormats instance = FileFormats.getInstance();
-    Iterator<FileFormatI> formats = instance.getFormats()
-            .iterator();
+    Iterator<FileFormatI> formats = instance.getFormats().iterator();
     FileFormatI[] builtIn = FileFormat.values();
 
     for (FileFormatI ff : builtIn)