3 import java.util.Locale;
5 import static org.testng.Assert.assertEquals;
6 import static org.testng.Assert.assertFalse;
7 import static org.testng.Assert.assertNotEquals;
8 import static org.testng.Assert.assertNull;
9 import static org.testng.Assert.assertSame;
10 import static org.testng.Assert.assertTrue;
12 import java.util.Iterator;
14 import org.testng.annotations.AfterMethod;
15 import org.testng.annotations.BeforeMethod;
16 import org.testng.annotations.Test;
18 public class FileFormatsTest
20 @AfterMethod(alwaysRun = true)
21 public void tearDown()
23 FileFormats.getInstance().reset();
26 @BeforeMethod(alwaysRun = true)
29 FileFormats.getInstance().reset();
32 @Test(groups = "Functional")
33 public void testIsIdentifiable()
35 FileFormats formats = FileFormats.getInstance();
37 .isIdentifiable(formats.forName(FileFormat.Fasta.getName())));
39 .isIdentifiable(formats.forName(FileFormat.MMCif.getName())));
41 .isIdentifiable(formats.forName(FileFormat.Jnet.getName())));
43 .isIdentifiable(formats.forName(FileFormat.Jalview.getName())));
45 assertFalse(formats.isIdentifiable(null));
48 * remove and re-add a format: it is still 'identifiable'
50 formats.deregisterFileFormat(FileFormat.Fasta.getName());
51 assertNull(formats.forName(FileFormat.Fasta.getName()));
52 formats.registerFileFormat(FileFormat.Fasta);
53 assertSame(FileFormat.Fasta,
54 formats.forName(FileFormat.Fasta.getName()));
55 assertTrue(formats.isIdentifiable(FileFormat.Fasta));
58 @Test(groups = "Functional")
59 public void testGetReadableFormats()
61 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]";
62 FileFormats formats = FileFormats.getInstance();
63 assertEquals(formats.getReadableFormats().toString(), expected);
66 @Test(groups = "Functional")
67 public void testGetWritableFormats()
69 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
70 FileFormats formats = FileFormats.getInstance();
71 assertEquals(formats.getWritableFormats(true).toString(), expected);
72 expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Jalview]";
73 assertEquals(formats.getWritableFormats(false).toString(), expected);
76 @Test(groups = "Functional")
77 public void testDeregisterFileFormat()
79 String writable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
80 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]";
81 FileFormats formats = FileFormats.getInstance();
82 assertEquals(formats.getWritableFormats(true).toString(), writable);
83 assertEquals(formats.getReadableFormats().toString(), readable);
85 formats.deregisterFileFormat(FileFormat.Fasta.getName());
86 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
87 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview]";
88 assertEquals(formats.getWritableFormats(true).toString(), writable);
89 assertEquals(formats.getReadableFormats().toString(), readable);
92 * re-register the format: it gets added to the end of the list
94 formats.registerFileFormat(FileFormat.Fasta);
95 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Fasta]";
96 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GenBank Flatfile, ENA Flatfile, GFF or Jalview features, PDB, mmCIF, Jalview, Fasta]";
97 assertEquals(formats.getWritableFormats(true).toString(), writable);
98 assertEquals(formats.getReadableFormats().toString(), readable);
101 @Test(groups = "Functional")
102 public void testForName()
104 FileFormats formats = FileFormats.getInstance();
105 for (FileFormatI ff : FileFormat.values())
107 assertSame(ff, formats.forName(ff.getName()));
108 assertSame(ff, formats.forName(ff.getName().toUpperCase(Locale.ROOT)));
109 assertSame(ff, formats.forName(ff.getName().toLowerCase(Locale.ROOT)));
111 assertNull(formats.forName(null));
112 assertNull(formats.forName("rubbish"));
115 @Test(groups = "Functional")
116 public void testRegisterFileFormat()
118 FileFormats formats = FileFormats.getInstance();
119 assertSame(FileFormat.MMCif,
120 formats.forName(FileFormat.MMCif.getName()));
121 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
124 * deregister mmCIF format
126 formats.deregisterFileFormat(FileFormat.MMCif.getName());
127 assertNull(formats.forName(FileFormat.MMCif.getName()));
130 * re-register mmCIF format
131 * it is reinstated (still 'identifiable')
133 formats.registerFileFormat(FileFormat.MMCif);
134 assertSame(FileFormat.MMCif,
135 formats.forName(FileFormat.MMCif.getName()));
136 assertTrue(formats.isIdentifiable(FileFormat.MMCif));
137 // repeating does nothing
138 formats.registerFileFormat(FileFormat.MMCif);
139 assertSame(FileFormat.MMCif,
140 formats.forName(FileFormat.MMCif.getName()));
143 @Test(groups = "Functional")
144 public void testGetFormats()
147 * verify the list of file formats registered matches the enum values
149 FileFormats instance = FileFormats.getInstance();
150 Iterator<FileFormatI> formats = instance.getFormats().iterator();
151 FileFormatI[] builtIn = FileFormat.values();
153 for (FileFormatI ff : builtIn)
155 assertSame(ff, formats.next());
157 assertFalse(formats.hasNext());
160 * remove the first format, check it is no longer in
161 * the list of formats
163 String firstFormatName = instance.getFormats().iterator().next()
165 instance.deregisterFileFormat(firstFormatName);
166 assertNotEquals(instance.getFormats().iterator().next().getName(),