package jalview.structure;
import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import jalview.datamodel.AlignedCodonFrame;
-import jalview.gui.AlignFrame;
-import jalview.gui.Desktop;
-import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.Set;
-import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
{
private StructureSelectionManager ssm;
- @BeforeClass(alwaysRun = true)
- public static void setUpBeforeClass() throws Exception
- {
- jalview.bin.Jalview.main(new String[] { "-props",
- "test/jalview/testProps.jvprops" });
- }
-
@BeforeMethod(alwaysRun = true)
public void setUp()
{
assertTrue(ssm.seqmappings.contains(acf2));
assertTrue(ssm.seqmappings.contains(acf3));
}
-
- /**
- * Test that a mapping is not deregistered if an alignment holds a reference
- * to it
- */
- @Test(groups ={ "Functional" })
- public void testDeregisterMapping_withAlignmentReference()
- {
- Desktop d = Desktop.instance;
- assertNotNull(d);
-
- /*
- * alignment with reference to mappings
- */
- AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nCAGT\n", FormatAdapter.PASTE);
-
- AlignedCodonFrame acf1 = new AlignedCodonFrame();
- AlignedCodonFrame acf2 = new AlignedCodonFrame();
-
- Set<AlignedCodonFrame> mappings = new LinkedHashSet<AlignedCodonFrame>();
- mappings.add(acf1);
- mappings.add(acf2);
- af1.getViewport().getAlignment().setCodonFrames(mappings);
-
- /*
- * Add one and remove it.
- */
- ssm.registerMapping(acf1);
- ssm.deregisterMapping(acf1);
- assertEquals(1, ssm.seqmappings.size());
- assertTrue(ssm.seqmappings.contains(acf1));
- }
-
- /**
- * Test that a mapping is deregistered if no alignment holds a reference to it
- */
- @Test(groups ={ "Functional" })
- public void testDeregisterMapping_withNoReference()
- {
- Desktop d = Desktop.instance;
- assertNotNull(d);
-
- /*
- * alignment with reference to mappings
- */
- AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nCAGT\n", FormatAdapter.PASTE);
-
- AlignedCodonFrame acf1 = new AlignedCodonFrame();
- AlignedCodonFrame acf2 = new AlignedCodonFrame();
-
- Set<AlignedCodonFrame> mappings = new LinkedHashSet<AlignedCodonFrame>();
- mappings.add(acf2);
- af1.getViewport().getAlignment().setCodonFrames(mappings);
-
- /*
- * Add one and remove it.
- */
- ssm.registerMapping(acf1);
- assertEquals(1, ssm.seqmappings.size());
- assertTrue(ssm.seqmappings.contains(acf1));
- ssm.deregisterMapping(acf1);
- assertEquals(0, ssm.seqmappings.size());
- }
-
- /**
- * Test that a mapping is not deregistered when a second view is closed but
- * the first still holds a reference to the mapping
- */
- @Test(groups ={ "Functional" })
- public void testDeregisterMapping_onCloseView()
- {
- /*
- * alignment with reference to mappings
- */
- AlignFrame af1 = new FileLoader().LoadFileWaitTillLoaded(
- ">Seq1\nCAGT\n", FormatAdapter.PASTE);
-
- AlignedCodonFrame acf1 = new AlignedCodonFrame();
- AlignedCodonFrame acf2 = new AlignedCodonFrame();
-
- Set<AlignedCodonFrame> mappings = new LinkedHashSet<AlignedCodonFrame>();
- mappings.add(acf1);
- mappings.add(acf2);
- af1.getViewport().getAlignment().setCodonFrames(mappings);
- af1.newView_actionPerformed(null);
-
- /*
- * Verify that creating the alignment for the new View has registered the
- * mappings
- */
- ssm = StructureSelectionManager
- .getStructureSelectionManager(Desktop.instance);
- assertEquals(2, ssm.seqmappings.size());
- assertTrue(ssm.seqmappings.contains(acf1));
- assertTrue(ssm.seqmappings.contains(acf2));
-
- /*
- * Close the second view. Verify that mappings are not removed as the first
- * view still holds a reference to them.
- */
- af1.closeMenuItem_actionPerformed(false);
- assertEquals(2, ssm.seqmappings.size());
- assertTrue(ssm.seqmappings.contains(acf1));
- assertTrue(ssm.seqmappings.contains(acf2));
- }
}