import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureColourI;
import jalview.api.ViewStyleI;
+import jalview.bin.Cache;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
import jalview.datamodel.HiddenSequences;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.PDBEntry.Type;
}
@Test(groups = { "Functional" })
- public void testRNAStructureRecovery() throws Exception
+ public void testRestoreRNAStructure() throws Exception
{
String inFile = "examples/RF00031_folded.stk";
String tfile = File.createTempFile("JalviewTest", ".jvp")
}
@Test(groups = { "Functional" })
- public void testTCoffeeScores() throws Exception
+ public void testRestoreTCoffeeColouring() throws Exception
{
String inFile = "examples/uniref50.fa",
inAnnot = "examples/uniref50.score_ascii";
}
@Test(groups = { "Functional" })
- public void testColourByAnnotScores() throws Exception
+ public void testRestoreColourByAnnotion() throws Exception
{
String inFile = "examples/uniref50.fa",
inAnnot = "examples/testdata/uniref50_iupred.jva";
* @throws Exception
*/
@Test(groups = { "Functional" }, enabled = true)
- public void testStoreAndRecoverExpandedviews() throws Exception
+ public void testRestoreExpandedviews() throws Exception
{
Desktop.instance.closeAll_actionPerformed(null);
int oldviews = Desktop.getAlignFrames().length;
Assert.assertEquals(Desktop.getAlignFrames().length,
Desktop.getAlignmentPanels(afid).length);
- File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp");
+ File tfile = File.createTempFile("testRestoreExpandedviews", ".jvp");
try
{
new Jalview2XML(false).saveState(tfile);
* @throws Exception
*/
@Test(groups = { "Functional" })
- public void testStoreAndRecoverReferenceSeqSettings() throws Exception
+ public void testRestoreReferenceSeqSettings() throws Exception
{
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
n++;
}
- File tfile = File.createTempFile("testStoreAndRecoverReferenceSeq",
+ File tfile = File.createTempFile("testRestoreReferenceSeqSettings",
".jvp");
try
{
* @throws Exception
*/
@Test(groups = { "Functional" })
- public void testStoreAndRecoverGroupRepSeqs() throws Exception
+ public void testRestoreGroupRepSeqs() throws Exception
{
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
n++;
}
- File tfile = File.createTempFile("testStoreAndRecoverGroupReps",
- ".jvp");
+ File tfile = File.createTempFile("testRestoreGroupRepSeqs", ".jvp");
try
{
new Jalview2XML(false).saveState(tfile);
* @throws Exception
*/
@Test(groups = { "Functional" })
- public void testStoreAndRecoverPDBEntry() throws Exception
+ public void testRestorePDBEntry() throws Exception
{
Desktop.instance.closeAll_actionPerformed(null);
String exampleFile = "examples/3W5V.pdb";
seqs[3].getDatasetSequence().getAllPDBEntries().get(0),
pdbEntries[3]);
- File tfile = File.createTempFile("testStoreAndRecoverPDBEntry", ".jvp");
+ File tfile = File.createTempFile("testRestorePDBEntry", ".jvp");
try
{
new Jalview2XML(false).saveState(tfile);
* @throws IOException
*/
@Test(groups = { "Functional" })
- public void testStoreAndRecoverColourThresholds() throws IOException
+ public void testRestoreColourThresholds() throws IOException
{
Desktop.instance.closeAll_actionPerformed(null);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
/*
* save project, close windows, reload project, verify
*/
- File tfile = File.createTempFile("testStoreAndRecoverColourThresholds",
+ File tfile = File.createTempFile("testRestoreColourThresholds",
".jvp");
tfile.deleteOnExit();
new Jalview2XML(false).saveState(tfile);
* @throws IOException
*/
@Test(groups = { "Functional" })
- public void testSaveLoadFeatureColoursAndFilters() throws IOException
+ public void testRestoreFeatureColoursAndFilters() throws IOException
{
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
">Seq1\nACDEFGHIKLM", DataSourceType.PASTE);
}
@Test(groups = "Functional")
- public void testPcaViewAssociation() throws IOException
+ public void testRestorePCAViewAssociation() throws IOException
{
Desktop.instance.closeAll_actionPerformed(null);
final String PCAVIEWNAME = "With PCA";
// create a new tempfile
- File tempfile = File.createTempFile("jvPCAviewAssoc", "jvp");
+ File tempfile = File.createTempFile("testRestorePCAViewAssociation",
+ "jvp");
{
String exampleFile = "examples/uniref50.fa";
.getAlignViewport(),
"Didn't restore correct view association for the PCA view");
}
+
+ /**
+ * Test that annotation ordering is faithfully restored
+ *
+ * @throws Exception
+ */
+ @Test(groups = { "Functional" })
+ public void testRestoreAnnotationOrdering() throws Exception
+ {
+ Desktop.instance.closeAll_actionPerformed(null);
+ Cache.setProperty("SHOW_ANNOTATION", "true");
+ Cache.setProperty("SHOW_CONSERVATION", "true");
+ Cache.setProperty("SHOW_QUALITY", "false");
+ Cache.setProperty("SHOW_IDENTITY", "false");
+ Cache.setProperty("SHOW_OCCUPANCY", "true");
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ "examples/uniref50.fa", DataSourceType.FILE);
+ assertNotNull(af, "Didn't read in the example file correctly.");
+
+ AlignFrame[] afs = Desktop.getAlignFrames();
+ assertEquals(afs.length, 1);
+ AlignmentI alignment = afs[0].getViewport().getAlignment();
+ AlignmentAnnotation[] anns = alignment.getAlignmentAnnotation();
+ assertEquals(anns.length, 2);
+
+ /*
+ * this order is hard wired in AlignmentViewport.initAutoAnnotation()
+ */
+ assertEquals(anns[0].label, "Conservation");
+ assertEquals(anns[1].label, "Occupancy");
+
+ /*
+ * add two user annotations, adjust order, height and visibility
+ */
+ AlignmentAnnotation tmp = anns[0];
+ anns[0] = anns[1];
+ anns[1] = tmp;
+ Annotation[] an1 = new Annotation[] { new Annotation(2f) };
+ Annotation[] an2 = new Annotation[] { new Annotation(3f) };
+ alignment.addAnnotation(new AlignmentAnnotation("hello", "desc1", an1),
+ 1);
+ alignment.addAnnotation(new AlignmentAnnotation("world", "desc2", an2),
+ 3);
+ anns = alignment.getAlignmentAnnotation();
+ assertEquals(anns[0].label, "Occupancy");
+ assertEquals(anns[1].label, "hello");
+ assertEquals(anns[2].label, "Conservation");
+ assertEquals(anns[3].label, "world");
+ anns[0].graphHeight = 60;
+ anns[0].visible = false;
+ anns[1].graphHeight = 70;
+ anns[2].graphHeight = 80;
+ anns[3].graphHeight = 90;
+ anns[3].visible = false;
+
+ /*
+ * save project to temporary file and reload on to an empty desktop,
+ * verify annotation order, height and visibility is restored
+ */
+ File projectFile = File.createTempFile("jvTest", ".jvp");
+ new Jalview2XML(false).saveState(projectFile);
+ Desktop.instance.closeAll_actionPerformed(null);
+ if (Desktop.getAlignFrames() != null)
+ {
+ Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+ }
+
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ projectFile.getAbsolutePath(),
+ DataSourceType.FILE);
+ anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+ assertEquals(anns.length, 4);
+ assertEquals(anns[0].label, "Occupancy");
+ assertEquals(anns[1].label, "hello");
+ assertEquals(anns[2].label, "Conservation");
+ assertEquals(anns[3].label, "world");
+ assertEquals(anns[0].graphHeight, 60);
+ assertEquals(anns[1].graphHeight, 70);
+ assertEquals(anns[2].graphHeight, 80);
+ assertEquals(anns[3].graphHeight, 90);
+ assertFalse(anns[0].visible);
+ assertTrue(anns[1].visible);
+ assertTrue(anns[2].visible);
+ assertFalse(anns[3].visible);
+
+ /*
+ * reload the project with Preferences set to not create Occupancy;
+ * this should still appear, as it is in the saved project
+ */
+ Desktop.instance.closeAll_actionPerformed(null);
+ Cache.setProperty("SHOW_OCCUPANCY", "false");
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ projectFile.getAbsolutePath(), DataSourceType.FILE);
+ anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+ assertEquals(anns.length, 4);
+ assertEquals(anns[0].label, "Occupancy");
+ assertEquals(anns[1].label, "hello");
+ assertEquals(anns[2].label, "Conservation");
+ assertEquals(anns[3].label, "world");
+
+ /*
+ * reload the project with Preferences set to create Quality annotation;
+ * this should not appear, as it is not in the saved project
+ */
+ Desktop.instance.closeAll_actionPerformed(null);
+ Cache.setProperty("SHOW_OCCUPANCY", "false");
+ Cache.setProperty("SHOW_QUALITY", "true");
+ af = new FileLoader().LoadFileWaitTillLoaded(
+ projectFile.getAbsolutePath(), DataSourceType.FILE);
+ anns = af.getViewport().getAlignment().getAlignmentAnnotation();
+ assertEquals(anns.length, 4);
+ assertEquals(anns[0].label, "Occupancy");
+ assertEquals(anns[1].label, "hello");
+ assertEquals(anns[2].label, "Conservation");
+ assertEquals(anns[3].label, "world");
+ }
}