package jalview.structure; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.io.FormatAdapter; import java.util.HashSet; import java.util.Set; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import MCview.PDBfile; public class StructureSelectionManagerTest { private StructureSelectionManager ssm; @BeforeMethod(alwaysRun = true) public void setUp() { ssm = new StructureSelectionManager(); } @Test(groups ={ "Functional" }) public void testRegisterMapping() { AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); ssm.registerMapping(acf1); assertEquals(1, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); ssm.registerMapping(acf2); assertEquals(2, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); assertTrue(ssm.seqmappings.contains(acf2)); /* * Re-adding the first mapping does nothing */ ssm.registerMapping(acf1); assertEquals(2, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); assertTrue(ssm.seqmappings.contains(acf2)); } @Test(groups ={ "Functional" }) public void testRegisterMappings() { AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); AlignedCodonFrame acf3 = new AlignedCodonFrame(); Set set1 = new HashSet(); set1.add(acf1); set1.add(acf2); Set set2 = new HashSet(); set2.add(acf2); set2.add(acf3); /* * Add both sets twice; each mapping should be added once only */ ssm.registerMappings(set1); ssm.registerMappings(set1); ssm.registerMappings(set2); ssm.registerMappings(set2); assertEquals(3, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); assertTrue(ssm.seqmappings.contains(acf2)); assertTrue(ssm.seqmappings.contains(acf3)); } /** * Verify that RESNUM sequence features are present after creating a PDB * mapping */ @Test(groups = { "Functional" }) public void testSetMapping_seqFeatures() { SequenceI seq = new Sequence( "1GAQ|B", "ATYNVKLITPEGEVELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDVVIETHKEEELTGA"); StructureSelectionManager sm = new StructureSelectionManager(); sm.setProcessSecondaryStructure(true); sm.setAddTempFacAnnot(true); PDBfile pmap = sm.setMapping(true, new SequenceI[] { seq }, new String[] { null }, "examples/1gaq.txt", FormatAdapter.FILE); assertTrue(pmap != null); assertEquals(3, pmap.getSeqs().size()); assertEquals("1GAQ|A", pmap.getSeqs().get(0).getName()); assertEquals("1GAQ|B", pmap.getSeqs().get(1).getName()); assertEquals("1GAQ|C", pmap.getSeqs().get(2).getName()); /* * Verify a RESNUM sequence feature in the PDBfile sequence */ SequenceFeature sf = pmap.getSeqs().get(0).getSequenceFeatures()[0]; assertEquals("RESNUM", sf.getType()); assertEquals("1gaq", sf.getFeatureGroup()); assertEquals("GLU: 19 1gaqA", sf.getDescription()); /* * Verify a RESNUM sequence feature in the StructureSelectionManager mapped * sequence */ StructureMapping map = sm.getMapping("examples/1gaq.txt")[0]; sf = map.sequence.getSequenceFeatures()[0]; assertEquals("RESNUM", sf.getType()); assertEquals("1gaq", sf.getFeatureGroup()); assertEquals("ALA: 1 1gaqB", sf.getDescription()); } }