X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fstructure%2FStructureSelectionManagerTest.java;h=6d66f7cc94881c20717308df8a931dba942605fb;hb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;hp=487ef2c046b20d62470a6df41f7f6376c97261cf;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/test/jalview/structure/StructureSelectionManagerTest.java b/test/jalview/structure/StructureSelectionManagerTest.java index 487ef2c..6d66f7c 100644 --- a/test/jalview/structure/StructureSelectionManagerTest.java +++ b/test/jalview/structure/StructureSelectionManagerTest.java @@ -1,65 +1,78 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.structure; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +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.junit.Before; -import org.junit.Test; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import MCview.PDBfile; public class StructureSelectionManagerTest { private StructureSelectionManager ssm; - @Before + @BeforeMethod(alwaysRun = true) public void setUp() { ssm = new StructureSelectionManager(); } - @Test - public void testAddMapping() + @Test(groups = { "Functional" }) + public void testRegisterMapping() { AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); - /* - * One mapping only. - */ - ssm.addMapping(acf1); + ssm.registerMapping(acf1); assertEquals(1, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); - assertEquals(1, ssm.seqMappingRefCounts.size()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue()); - /* - * A second mapping. - */ - ssm.addMapping(acf2); + ssm.registerMapping(acf2); assertEquals(2, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); assertTrue(ssm.seqmappings.contains(acf2)); - assertEquals(2, ssm.seqMappingRefCounts.size()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue()); /* - * A second reference to the first mapping. + * Re-adding the first mapping does nothing */ - ssm.addMapping(acf1); + ssm.registerMapping(acf1); assertEquals(2, ssm.seqmappings.size()); assertTrue(ssm.seqmappings.contains(acf1)); assertTrue(ssm.seqmappings.contains(acf2)); - assertEquals(2, ssm.seqMappingRefCounts.size()); - assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue()); } - @Test - public void testAddMappings() + @Test(groups = { "Functional" }) + public void testRegisterMappings() { AlignedCodonFrame acf1 = new AlignedCodonFrame(); AlignedCodonFrame acf2 = new AlignedCodonFrame(); @@ -73,103 +86,57 @@ public class StructureSelectionManagerTest set2.add(acf3); /* - * Adding both sets adds acf2 twice and acf1 and acf3 once each. + * Add both sets twice; each mapping should be added once only */ - ssm.addMappings(set1); - ssm.addMappings(set2); + 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)); - assertEquals(3, ssm.seqMappingRefCounts.size()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue()); - assertEquals(2, ssm.seqMappingRefCounts.get(acf2).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue()); - } - - @Test - public void testRemoveMapping() - { - AlignedCodonFrame acf1 = new AlignedCodonFrame(); - AlignedCodonFrame acf2 = new AlignedCodonFrame(); - ssm.addMapping(acf1); - - /* - * Add one and remove it. - */ - ssm.removeMapping(acf1); - ssm.removeMapping(acf2); - assertEquals(0, ssm.seqmappings.size()); - assertEquals(0, ssm.seqMappingRefCounts.size()); - - /* - * Add one twice and remove it once. - */ - ssm.addMapping(acf1); - ssm.addMapping(acf2); - ssm.addMapping(acf1); - ssm.removeMapping(acf1); - assertEquals(2, ssm.seqmappings.size()); - assertTrue(ssm.seqmappings.contains(acf1)); - assertTrue(ssm.seqmappings.contains(acf2)); - assertEquals(2, ssm.seqMappingRefCounts.size()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf1).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue()); - - /* - * Remove both once more to clear the set. - */ - ssm.removeMapping(acf1); - ssm.removeMapping(acf2); - assertEquals(0, ssm.seqmappings.size()); - assertEquals(0, ssm.seqMappingRefCounts.size()); } - @Test - public void testRemoveMappings() + /** + * Verify that RESNUM sequence features are present after creating a PDB + * mapping + */ + @Test(groups = { "Functional" }) + public void testSetMapping_seqFeatures() { - AlignedCodonFrame acf1 = new AlignedCodonFrame(); - AlignedCodonFrame acf2 = new AlignedCodonFrame(); - AlignedCodonFrame acf3 = new AlignedCodonFrame(); + 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()); /* - * Initial ref counts are 3/2/1: + * Verify a RESNUM sequence feature in the PDBfile sequence */ - ssm.addMapping(acf1); - ssm.addMapping(acf1); - ssm.addMapping(acf1); - ssm.addMapping(acf2); - ssm.addMapping(acf2); - ssm.addMapping(acf3); - - Set set1 = new HashSet(); - set1.add(acf1); - set1.add(acf2); - Set set2 = new HashSet(); - set2.add(acf2); - set2.add(acf3); - - /* - * Remove one ref each to acf1, acf2, counts are now 2/1/1: - */ - ssm.removeMappings(set1); - assertEquals(3, ssm.seqmappings.size()); - assertTrue(ssm.seqmappings.contains(acf1)); - assertTrue(ssm.seqmappings.contains(acf2)); - assertTrue(ssm.seqmappings.contains(acf3)); - assertEquals(3, ssm.seqMappingRefCounts.size()); - assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf2).intValue()); - assertEquals(1, ssm.seqMappingRefCounts.get(acf3).intValue()); + SequenceFeature sf = pmap.getSeqs().get(0).getSequenceFeatures()[0]; + assertEquals("RESNUM", sf.getType()); + assertEquals("1gaq", sf.getFeatureGroup()); + assertEquals("GLU: 19 1gaqA", sf.getDescription()); /* - * Remove one ref each to acf2, acf3 - they are removed + * Verify a RESNUM sequence feature in the StructureSelectionManager mapped + * sequence */ - ssm.removeMappings(set2); - assertEquals(1, ssm.seqmappings.size()); - assertTrue(ssm.seqmappings.contains(acf1)); - assertEquals(1, ssm.seqMappingRefCounts.size()); - assertEquals(2, ssm.seqMappingRefCounts.get(acf1).intValue()); + 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()); } }