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 testIsDynamic()
26 FileFormats formats = FileFormats.getInstance();
27 for (FileFormatI ff : FileFormat.values())
29 assertFalse(formats.isDynamic(ff));
31 assertTrue(formats.isDynamic(null));
34 * remove and re-add a format: it is now considered 'dynamically added'
36 formats.deregisterFileFormat(FileFormat.Fasta.getName());
37 assertNull(formats.forName(FileFormat.Fasta.getName()));
38 formats.registerFileFormat(FileFormat.Fasta);
39 assertSame(FileFormat.Fasta,
40 formats.forName(FileFormat.Fasta.getName()));
41 assertTrue(formats.isDynamic(FileFormat.Fasta));
44 @Test(groups = "Functional")
45 public void testGetReadableFormats()
47 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
48 FileFormats formats = FileFormats.getInstance();
49 assertEquals(formats.getReadableFormats().toString(), expected);
52 @Test(groups = "Functional")
53 public void testGetWritableFormats()
55 String expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
56 FileFormats formats = FileFormats.getInstance();
57 assertEquals(formats.getWritableFormats(true).toString(), expected);
58 expected = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Jalview]";
59 assertEquals(formats.getWritableFormats(false).toString(), expected);
62 @Test(groups = "Functional")
63 public void testDeregisterFileFormat()
65 String writable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
66 String readable = "[Fasta, PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
67 FileFormats formats = FileFormats.getInstance();
68 assertEquals(formats.getWritableFormats(true).toString(), writable);
69 assertEquals(formats.getReadableFormats().toString(), readable);
71 formats.deregisterFileFormat(FileFormat.Fasta.getName());
72 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP]";
73 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview]";
74 assertEquals(formats.getWritableFormats(true).toString(), writable);
75 assertEquals(formats.getReadableFormats().toString(), readable);
78 * re-register the format: it gets added to the end of the list
80 formats.registerFileFormat(FileFormat.Fasta);
81 writable = "[PFAM, Stockholm, PIR, BLC, AMSA, JSON, PileUp, MSF, Clustal, PHYLIP, Fasta]";
82 readable = "[PFAM, Stockholm, PIR, BLC, AMSA, HTML, RNAML, JSON, PileUp, MSF, Clustal, PHYLIP, GFF or Jalview features, PDB, mmCIF, Jalview, Fasta]";
83 assertEquals(formats.getWritableFormats(true).toString(), writable);
84 assertEquals(formats.getReadableFormats().toString(), readable);
87 @Test(groups = "Functional")
88 public void testForName()
90 FileFormats formats = FileFormats.getInstance();
91 for (FileFormatI ff : FileFormat.values())
93 assertSame(ff, formats.forName(ff.getName()));
94 assertSame(ff, formats.forName(ff.getName().toUpperCase()));
95 assertSame(ff, formats.forName(ff.getName().toLowerCase()));
97 assertNull(formats.forName(null));
98 assertNull(formats.forName("rubbish"));
101 @Test(groups = "Functional")
102 public void testRegisterFileFormat()
104 FileFormats formats = FileFormats.getInstance();
105 assertSame(FileFormat.MMCif,
106 formats.forName(FileFormat.MMCif.getName()));
107 assertFalse(formats.isDynamic(FileFormat.MMCif));
110 * deregister mmCIF format
112 formats.deregisterFileFormat(FileFormat.MMCif.getName());
113 assertNull(formats.forName(FileFormat.MMCif.getName()));
116 * re-register mmCIF format
117 * it is reinstated (but now classed as 'dynamic')
119 formats.registerFileFormat(FileFormat.MMCif);
120 assertSame(FileFormat.MMCif,
121 formats.forName(FileFormat.MMCif.getName()));
122 assertTrue(formats.isDynamic(FileFormat.MMCif));
123 // repeating does nothing
124 formats.registerFileFormat(FileFormat.MMCif);
125 assertSame(FileFormat.MMCif,
126 formats.forName(FileFormat.MMCif.getName()));
129 @Test(groups = "Functional")
130 public void testGetFormats()
133 * verify the list of file formats registered matches the enum values
135 FileFormats instance = FileFormats.getInstance();
136 Iterator<FileFormatI> formats = instance.getFormats()
138 FileFormatI[] builtIn = FileFormat.values();
140 for (FileFormatI ff : builtIn)
142 assertSame(ff, formats.next());
144 assertFalse(formats.hasNext());
147 * remove the first format, check it is no longer in
148 * the list of formats
150 String firstFormatName = instance.getFormats().iterator().next()
152 instance.deregisterFileFormat(firstFormatName);
153 assertNotEquals(instance.getFormats().iterator().next().getName(),