From c4fdef7e109bac9f1da72ec3954a17a931f163df Mon Sep 17 00:00:00 2001 From: gmungoc Date: Thu, 27 Aug 2015 16:30:54 +0100 Subject: [PATCH] JAL-1830 unit tests for removing (or not) mappings on close frame --- test/jalview/gui/AlignViewportTest.java | 109 +++++++++++++++++++++---------- 1 file changed, 75 insertions(+), 34 deletions(-) diff --git a/test/jalview/gui/AlignViewportTest.java b/test/jalview/gui/AlignViewportTest.java index 6f51487..0b5840c 100644 --- a/test/jalview/gui/AlignViewportTest.java +++ b/test/jalview/gui/AlignViewportTest.java @@ -1,6 +1,7 @@ package jalview.gui; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; @@ -145,71 +146,111 @@ public class AlignViewportTest } /** - * Test that a mapping is not deregistered if an alignment holds a reference - * to it + * Test that a mapping is deregistered if no alignment holds a reference to it */ @Test(groups ={ "Functional" }) - public void testDeregisterMapping_withAlignmentReference() + public void testDeregisterMapping_withNoReference() { Desktop d = Desktop.instance; assertNotNull(d); - - /* - * alignment with reference to mappings - */ + StructureSelectionManager ssm = StructureSelectionManager + .getStructureSelectionManager(Desktop.instance); + ssm.resetAll(); + AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded( - ">Seq1\nCAGT\n", FormatAdapter.PASTE); + ">Seq1\nRSVQ\n", FormatAdapter.PASTE); + AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded( + ">Seq2\nDGEL\n", FormatAdapter.PASTE); AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); + AlignedCodonFrame acf3 = new AlignedCodonFrame(); - Set mappings = new LinkedHashSet(); - mappings.add(acf1); - mappings.add(acf2); - af1.getViewport().getAlignment().setCodonFrames(mappings); - StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); + Set mappings1 = new LinkedHashSet(); + mappings1.add(acf1); + af1.getViewport().getAlignment().setCodonFrames(mappings1); + Set mappings2 = new LinkedHashSet(); + mappings2.add(acf2); + mappings2.add(acf3); + af2.getViewport().getAlignment().setCodonFrames(mappings2); + /* - * Add one and remove it. + * AlignFrame1 has mapping acf1, AlignFrame2 has acf2 and acf3 */ + + Set ssmMappings = ssm.seqmappings; + assertEquals(0, ssmMappings.size()); ssm.registerMapping(acf1); - ssm.deregisterMapping(acf1); - assertEquals(1, ssm.seqmappings.size()); - assertTrue(ssm.seqmappings.contains(acf1)); + assertEquals(1, ssmMappings.size()); + ssm.registerMapping(acf2); + assertEquals(2, ssmMappings.size()); + ssm.registerMapping(acf3); + assertEquals(3, ssmMappings.size()); + + /* + * Closing AlignFrame2 should remove its mappings from + * StructureSelectionManager, since AlignFrame1 has no reference to them + */ + af2.closeMenuItem_actionPerformed(true); + assertEquals(1, ssmMappings.size()); + assertTrue(ssmMappings.contains(acf1)); } /** - * Test that a mapping is deregistered if no alignment holds a reference to it + * Test that a mapping is not deregistered if another alignment holds a + * reference to it */ @Test(groups ={ "Functional" }) - public void testDeregisterMapping_withNoReference() + public void testDeregisterMapping_withReference() { Desktop d = Desktop.instance; assertNotNull(d); + StructureSelectionManager ssm = StructureSelectionManager + .getStructureSelectionManager(Desktop.instance); + ssm.resetAll(); - /* - * alignment with reference to mappings - */ AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded( - ">Seq1\nCAGT\n", FormatAdapter.PASTE); + ">Seq1\nRSVQ\n", FormatAdapter.PASTE); + AlignFrame af2 = new FileLoader().LoadFileWaitTillLoaded( + ">Seq2\nDGEL\n", FormatAdapter.PASTE); AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); + AlignedCodonFrame acf3 = new AlignedCodonFrame(); - Set mappings = new LinkedHashSet(); - mappings.add(acf2); - af1.getViewport().getAlignment().setCodonFrames(mappings); - StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); + Set mappings1 = new LinkedHashSet(); + mappings1.add(acf1); + mappings1.add(acf2); + af1.getViewport().getAlignment().setCodonFrames(mappings1); + + Set mappings2 = new LinkedHashSet(); + mappings2.add(acf2); + mappings2.add(acf3); + af2.getViewport().getAlignment().setCodonFrames(mappings2); /* - * Add one and remove it. + * AlignFrame1 has mappings acf1 and acf2, AlignFrame2 has acf2 and acf3 */ + + Set ssmMappings = ssm.seqmappings; + assertEquals(0, ssmMappings.size()); ssm.registerMapping(acf1); - assertEquals(1, ssm.seqmappings.size()); - assertTrue(ssm.seqmappings.contains(acf1)); - ssm.deregisterMapping(acf1); - assertEquals(0, ssm.seqmappings.size()); + assertEquals(1, ssmMappings.size()); + ssm.registerMapping(acf2); + assertEquals(2, ssmMappings.size()); + ssm.registerMapping(acf3); + assertEquals(3, ssmMappings.size()); + + /* + * Closing AlignFrame2 should remove mapping acf3 from + * StructureSelectionManager, but not acf2, since AlignFrame1 still has a + * reference to it + */ + af2.closeMenuItem_actionPerformed(true); + assertEquals(2, ssmMappings.size()); + assertTrue(ssmMappings.contains(acf1)); + assertTrue(ssmMappings.contains(acf2)); + assertFalse(ssmMappings.contains(acf3)); } } -- 1.7.10.2