3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertNotEquals;
6 import static org.testng.Assert.assertNull;
7 import static org.testng.Assert.assertSame;
8 import static org.testng.Assert.assertTrue;
10 import java.util.Iterator;
12 import org.testng.annotations.AfterMethod;
13 import org.testng.annotations.BeforeMethod;
14 import org.testng.annotations.Test;
16 public class FileFormatsTest
18 @AfterMethod(alwaysRun = true)
19 public void tearDown()
21 FileFormats.getInstance().reset();
24 @BeforeMethod(alwaysRun = true)
27 FileFormats.getInstance().reset();
30 @Test(groups = "Functional")
31 public void testIsIdentifiable()
33 FileFormats formats = FileFormats.getInstance();
34 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.Fasta
36 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.MMCif
38 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.Jnet
40 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.Jalview
42 assertFalse(formats.isIdentifiable(null));
45 * remove and re-add a format: it is still 'identifiable'
47 formats.deregisterFileFormat(FileFormat.Fasta.getName());
48 assertNull(formats.forName(FileFormat.Fasta.getName()));
49 formats.registerFileFormat(FileFormat.Fasta);
50 assertSame(FileFormat.Fasta,
51 formats.forName(FileFormat.Fasta.getName()));
52 assertTrue(formats.isIdentifiable(FileFormat.Fasta));
55 @Test(groups = "Functional")
56 public void testGetReadableFormats()
58 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]";
59 FileFormats formats = FileFormats.getInstance();
60 assertEquals(formats.getReadableFormats().toString(), expected);
63 @Test(groups = "Functional")
64 public void testGetWritableFormats()
66 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, HMMER3]";
67 FileFormats formats = FileFormats.getInstance();
68 assertEquals(formats.getWritableFormats(true).toString(), expected);
69 expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Jalview, HMMER3]";
70 assertEquals(formats.getWritableFormats(false).toString(), expected);
73 @Test(groups = "Functional")
74 public void testDeregisterFileFormat()
76 String writable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, HMMER3]";
77 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, HMMER3, BSML]";
78 FileFormats formats = FileFormats.getInstance();
79 System.out.println(formats.getReadableFormats().toString());
80 assertEquals(formats.getWritableFormats(true).toString(), writable);
81 assertEquals(formats.getReadableFormats().toString(), readable);
83 formats.deregisterFileFormat(FileFormat.Fasta.getName());
84 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, HMMER3]";
85 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, HMMER3, BSML]";
86 assertEquals(formats.getWritableFormats(true).toString(), writable);
87 assertEquals(formats.getReadableFormats().toString(), readable);
90 * re-register the format: it gets added to the end of the list
92 formats.registerFileFormat(FileFormat.Fasta);
93 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, HMMER3, Fasta]";
94 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, HMMER3, BSML, Fasta]";
95 assertEquals(formats.getWritableFormats(true).toString(), writable);
96 assertEquals(formats.getReadableFormats().toString(), readable);
99 @Test(groups = "Functional")
100 public void testForName()
102 FileFormats formats = FileFormats.getInstance();
103 for (FileFormatI ff : FileFormat.values())
105 assertSame(ff, formats.forName(ff.getName()));
106 assertSame(ff, formats.forName(ff.getName().toUpperCase(Locale.ROOT)));
107 assertSame(ff, formats.forName(ff.getName().toLowerCase(Locale.ROOT)));
109 assertNull(formats.forName(null));
110 assertNull(formats.forName("rubbish"));
113 @Test(groups = "Functional")
114 public void testRegisterFileFormat()
116 FileFormats formats = FileFormats.getInstance();
117 assertSame(FileFormat.MMCif,
118 formats.forName(FileFormat.MMCif.getName()));
119 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
122 * deregister mmCIF format
124 formats.deregisterFileFormat(FileFormat.MMCif.getName());
125 assertNull(formats.forName(FileFormat.MMCif.getName()));
128 * re-register mmCIF format
129 * it is reinstated (still 'identifiable')
131 formats.registerFileFormat(FileFormat.MMCif);
132 assertSame(FileFormat.MMCif,
133 formats.forName(FileFormat.MMCif.getName()));
134 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
135 // repeating does nothing
136 formats.registerFileFormat(FileFormat.MMCif);
137 assertSame(FileFormat.MMCif,
138 formats.forName(FileFormat.MMCif.getName()));
141 @Test(groups = "Functional")
142 public void testGetFormats()
145 * verify the list of file formats registered matches the enum values
147 FileFormats instance = FileFormats.getInstance();
148 Iterator<FileFormatI> formats = instance.getFormats()
150 FileFormatI[] builtIn = FileFormat.values();
152 for (FileFormatI ff : builtIn)
154 assertSame(ff, formats.next());
156 assertFalse(formats.hasNext());
159 * remove the first format, check it is no longer in
160 * the list of formats
162 String firstFormatName = instance.getFormats().iterator().next()
164 instance.deregisterFileFormat(firstFormatName);
165 assertNotEquals(instance.getFormats().iterator().next().getName(),