From 716b7ed46ecee85d5a5ced3e2c0cf65523b278ae Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Wed, 9 Jan 2019 17:29:21 +0000 Subject: [PATCH] JAL-1767 failing test to check if the PCA view association is correctly saved and restored --- test/jalview/project/Jalview2xmlTests.java | 56 ++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/test/jalview/project/Jalview2xmlTests.java b/test/jalview/project/Jalview2xmlTests.java index 6739cab..a0f1f6d 100644 --- a/test/jalview/project/Jalview2xmlTests.java +++ b/test/jalview/project/Jalview2xmlTests.java @@ -27,6 +27,7 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; +import jalview.analysis.scoremodels.SimilarityParams; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; import jalview.api.FeatureColourI; @@ -49,6 +50,7 @@ import jalview.gui.AlignmentPanel; import jalview.gui.Desktop; import jalview.gui.FeatureRenderer; import jalview.gui.JvOptionPane; +import jalview.gui.PCAPanel; import jalview.gui.PopupMenu; import jalview.gui.SliderPanel; import jalview.io.DataSourceType; @@ -77,6 +79,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.swing.JInternalFrame; + import org.testng.Assert; import org.testng.AssertJUnit; import org.testng.annotations.BeforeClass; @@ -1102,4 +1106,56 @@ public class Jalview2xmlTests extends Jalview2xmlBase } return ds; } + + @Test(groups = "Functional") + public void testPcaViewAssociation() throws IOException + { + Desktop.instance.closeAll_actionPerformed(null); + final String PCAVIEWNAME = "With PCA"; + // create a new tempfile + File tempfile = File.createTempFile("jvPCAviewAssoc", "jvp"); + + { + String exampleFile = "examples/uniref50.fa"; + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(exampleFile, + DataSourceType.FILE); + assertNotNull(af, "Didn't read in the example file correctly."); + AlignmentPanel newview = af.newView(PCAVIEWNAME, true); + // create another for good measure + af.newView("Not the PCA View", true); + PCAPanel pcaPanel = new PCAPanel(newview, "BLOSUM62", + new SimilarityParams(true, true, true, false)); + + // we're in the test exec thread, so we can just run synchronously here + pcaPanel.run(); + + assertTrue(pcaPanel.getAlignViewport() == newview.getAlignViewport(), + "PCA should be associated with 'With PCA' view: test is broken"); + + // now save and reload project + Jalview2XML jv2xml = new jalview.project.Jalview2XML(false); + tempfile.delete(); + jv2xml.saveState(tempfile); + assertTrue(jv2xml.errorMessage == null, + "Failed to save dummy project with PCA: test broken"); + } + + // load again. + Desktop.instance.closeAll_actionPerformed(null); + AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( + tempfile.getCanonicalPath(), DataSourceType.FILE); + JInternalFrame[] frames = Desktop.instance.getAllFrames(); + // PCA and the tabbed alignment view should be the only two windows on the + // desktop + assertEquals(frames.length, 2, + "PCA and the tabbed alignment view should be the only two windows on the desktop"); + PCAPanel pcaPanel = (PCAPanel) frames[frames[0] == af ? 1 : 0]; + + AlignmentViewPanel restoredNewView = af.getAlignPanels().get(1); + assertEquals(restoredNewView.getViewName(), PCAVIEWNAME); + assertTrue( + restoredNewView.getAlignViewport() == pcaPanel + .getAlignViewport(), + "Didn't restore correct view association for the PCA view"); + } } -- 1.7.10.2