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.Test;
15 public class FileFormatsTest
18 public void tearDown()
20 FileFormats.getInstance().reset();
23 @Test(groups = "Functional")
24 public void testIsIdentifiable()
26 FileFormats formats = FileFormats.getInstance();
27 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.Fasta
29 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.MMCif
31 assertTrue(formats.isIdentifiable(formats.forName(FileFormat.Jnet
33 assertFalse(formats.isIdentifiable(formats.forName(FileFormat.Jalview
35 assertFalse(formats.isIdentifiable(null));
38 * remove and re-add a format: it is still 'identifiable'
40 formats.deregisterFileFormat(FileFormat.Fasta.getName());
41 assertNull(formats.forName(FileFormat.Fasta.getName()));
42 formats.registerFileFormat(FileFormat.Fasta);
43 assertSame(FileFormat.Fasta,
44 formats.forName(FileFormat.Fasta.getName()));
45 assertTrue(formats.isIdentifiable(FileFormat.Fasta));
48 @Test(groups = "Functional")
49 public void testGetReadableFormats()
51 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
52 FileFormats formats = FileFormats.getInstance();
53 assertEquals(formats.getReadableFormats().toString(), expected);
56 @Test(groups = "Functional")
57 public void testGetWritableFormats()
59 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
60 FileFormats formats = FileFormats.getInstance();
61 assertEquals(formats.getWritableFormats(true).toString(), expected);
62 expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Jalview]";
63 assertEquals(formats.getWritableFormats(false).toString(), expected);
66 @Test(groups = "Functional")
67 public void testDeregisterFileFormat()
69 String writable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
70 String readable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
71 FileFormats formats = FileFormats.getInstance();
72 assertEquals(formats.getWritableFormats(true).toString(), writable);
73 assertEquals(formats.getReadableFormats().toString(), readable);
75 formats.deregisterFileFormat(FileFormat.Fasta.getName());
76 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
77 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
78 assertEquals(formats.getWritableFormats(true).toString(), writable);
79 assertEquals(formats.getReadableFormats().toString(), readable);
82 * re-register the format: it gets added to the end of the list
84 formats.registerFileFormat(FileFormat.Fasta);
85 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Fasta]";
86 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview, Fasta]";
87 assertEquals(formats.getWritableFormats(true).toString(), writable);
88 assertEquals(formats.getReadableFormats().toString(), readable);
91 @Test(groups = "Functional")
92 public void testForName()
94 FileFormats formats = FileFormats.getInstance();
95 for (FileFormatI ff : FileFormat.values())
97 assertSame(ff, formats.forName(ff.getName()));
98 assertSame(ff, formats.forName(ff.getName().toUpperCase()));
99 assertSame(ff, formats.forName(ff.getName().toLowerCase()));
101 assertNull(formats.forName(null));
102 assertNull(formats.forName("rubbish"));
105 @Test(groups = "Functional")
106 public void testRegisterFileFormat()
108 FileFormats formats = FileFormats.getInstance();
109 assertSame(FileFormat.MMCif,
110 formats.forName(FileFormat.MMCif.getName()));
111 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
114 * deregister mmCIF format
116 formats.deregisterFileFormat(FileFormat.MMCif.getName());
117 assertNull(formats.forName(FileFormat.MMCif.getName()));
120 * re-register mmCIF format
121 * it is reinstated (still 'identifiable')
123 formats.registerFileFormat(FileFormat.MMCif);
124 assertSame(FileFormat.MMCif,
125 formats.forName(FileFormat.MMCif.getName()));
126 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
127 // repeating does nothing
128 formats.registerFileFormat(FileFormat.MMCif);
129 assertSame(FileFormat.MMCif,
130 formats.forName(FileFormat.MMCif.getName()));
133 @Test(groups = "Functional")
134 public void testGetFormats()
137 * verify the list of file formats registered matches the enum values
139 FileFormats instance = FileFormats.getInstance();
140 Iterator<FileFormatI> formats = instance.getFormats()
142 FileFormatI[] builtIn = FileFormat.values();
144 for (FileFormatI ff : builtIn)
146 assertSame(ff, formats.next());
148 assertFalse(formats.hasNext());
151 * remove the first format, check it is no longer in
152 * the list of formats
154 String firstFormatName = instance.getFormats().iterator().next()
156 instance.deregisterFileFormat(firstFormatName);
157 assertNotEquals(instance.getFormats().iterator().next().getName(),