X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FSequenceTest.java;h=03c4a96025a0a44623acf71f04c9827954553568;hb=b052502c048abfd6981bdad47d1582e8663804e1;hp=b8116f53becbb738d155aafd88e04d998ddcbd8e;hpb=1e8c7a9ab9f5da589d0aa2482fd2e3361c320d57;p=jalview.git diff --git a/test/jalview/datamodel/SequenceTest.java b/test/jalview/datamodel/SequenceTest.java index b8116f5..03c4a96 100644 --- a/test/jalview/datamodel/SequenceTest.java +++ b/test/jalview/datamodel/SequenceTest.java @@ -26,19 +26,22 @@ import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertSame; import static org.testng.AssertJUnit.assertTrue; +import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; import jalview.datamodel.PDBEntry.Type; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Vector; +import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class SequenceTest { - SequenceI seq; + Sequence seq; @BeforeMethod(alwaysRun = true) public void setUp() @@ -309,9 +312,13 @@ public class SequenceTest assertEquals(1, sfs.length); assertSame(sf, sfs[0]); + /* * SequenceFeature on sequence and dataset sequence; returns that on * sequence + * + * Note JAL-2046: spurious: we have no use case for this at the moment. + * This test also buggy - as sf2.equals(sf), no new feature is added */ SequenceFeature sf2 = new SequenceFeature(); sq.getDatasetSequence().addSequenceFeature(sf2); @@ -321,17 +328,20 @@ public class SequenceTest /* * SequenceFeature on dataset sequence only + * Note JAL-2046: spurious: we have no use case for setting a non-dataset sequence's feature array to null at the moment. */ sq.setSequenceFeatures(null); - sfs = sq.getSequenceFeatures(); - assertEquals(1, sfs.length); - assertSame(sf2, sfs[0]); + assertNull(sq.getDatasetSequence().getSequenceFeatures()); /* * Corrupt case - no SequenceFeature, dataset's dataset is the original * sequence. Test shows no infinite loop results. */ sq.getDatasetSequence().setSequenceFeatures(null); + /** + * is there a usecase for this ? setDatasetSequence should throw an error if + * this actually occurs. + */ sq.getDatasetSequence().setDatasetSequence(sq); // loop! assertNull(sq.getSequenceFeatures()); } @@ -382,20 +392,87 @@ public class SequenceTest @Test(groups = { "Functional" }) public void testDeriveSequence_existingDataset() { - SequenceI sq = new Sequence("Seq1", "CD"); + Sequence sq = new Sequence("Seq1", "CD"); sq.setDatasetSequence(new Sequence("Seq1", "ABCDEF")); sq.getDatasetSequence().addSequenceFeature( new SequenceFeature("", "", 1, 2, 0f, null)); sq.setStart(3); sq.setEnd(4); - SequenceI derived = sq.deriveSequence(); + + sq.setDescription("Test sequence description.."); + sq.setVamsasId("TestVamsasId"); + sq.setSourceDBRef(new DBRefEntry("PDB", "version0", "1TST")); + + sq.addDBRef(new DBRefEntry("PDB", "version1", "1Tst")); + sq.addDBRef(new DBRefEntry("PDB", "version2", "2Tst")); + sq.addDBRef(new DBRefEntry("PDB", "version3", "3Tst")); + sq.addDBRef(new DBRefEntry("PDB", "version4", "4Tst")); + + sq.addPDBId(new PDBEntry("1PDB", "A", Type.PDB, "filePath/test1")); + sq.addPDBId(new PDBEntry("1PDB", "B", Type.PDB, "filePath/test1")); + sq.addPDBId(new PDBEntry("2PDB", "A", Type.MMCIF, "filePath/test2")); + sq.addPDBId(new PDBEntry("2PDB", "B", Type.MMCIF, "filePath/test2")); + + sq.getDatasetSequence().addDBRef( + new DBRefEntry("PDB", "version1", "1Tst")); + sq.getDatasetSequence().addDBRef( + new DBRefEntry("PDB", "version2", "2Tst")); + sq.getDatasetSequence().addDBRef( + new DBRefEntry("PDB", "version3", "3Tst")); + sq.getDatasetSequence().addDBRef( + new DBRefEntry("PDB", "version4", "4Tst")); + + sq.getDatasetSequence().addPDBId( + new PDBEntry("1PDB", "A", Type.PDB, "filePath/test1")); + sq.getDatasetSequence().addPDBId( + new PDBEntry("1PDB", "B", Type.PDB, "filePath/test1")); + sq.getDatasetSequence().addPDBId( + new PDBEntry("2PDB", "A", Type.MMCIF, "filePath/test2")); + sq.getDatasetSequence().addPDBId( + new PDBEntry("2PDB", "B", Type.MMCIF, "filePath/test2")); + + ArrayList annotsList = new ArrayList(); + System.out.println(">>>>>> " + sq.getSequenceAsString().length()); + annotsList.add(new Annotation("A", "A", 'X', 0.1f)); + annotsList.add(new Annotation("A", "A", 'X', 0.1f)); + Annotation[] annots = annotsList.toArray(new Annotation[0]); + sq.addAlignmentAnnotation(new AlignmentAnnotation("Test annot", + "Test annot description", annots)); + sq.getDatasetSequence().addAlignmentAnnotation( + new AlignmentAnnotation("Test annot", "Test annot description", + annots)); + Assert.assertEquals(sq.getDescription(), "Test sequence description.."); + Assert.assertEquals(sq.getDBRefs().length, 4); + Assert.assertEquals(sq.getAllPDBEntries().size(), 4); + Assert.assertNotNull(sq.getAnnotation()); + Assert.assertEquals(sq.getAnnotation()[0].annotations.length, 2); + Assert.assertEquals(sq.getDatasetSequence().getDBRefs().length, 4); + Assert.assertEquals(sq.getDatasetSequence().getAllPDBEntries().size(), + 4); + Assert.assertNotNull(sq.getDatasetSequence().getAnnotation()); + + Sequence derived = (Sequence) sq.deriveSequence(); + + Assert.assertEquals(derived.getDescription(), + "Test sequence description.."); + Assert.assertEquals(derived.getDBRefs().length, 4); + Assert.assertEquals(derived.getAllPDBEntries().size(), 4); + Assert.assertNotNull(derived.getAnnotation()); + Assert.assertEquals(derived.getAnnotation()[0].annotations.length, 2); + Assert.assertEquals(derived.getDatasetSequence().getDBRefs().length, 4); + Assert.assertEquals(derived.getDatasetSequence().getAllPDBEntries() + .size(), 4); + Assert.assertNotNull(derived.getDatasetSequence().getAnnotation()); + assertEquals("CD", derived.getSequenceAsString()); assertSame(sq.getDatasetSequence(), derived.getDatasetSequence()); - assertNull(((Sequence) seq).sequenceFeatures); - assertNull(((Sequence) derived).sequenceFeatures); - assertNotNull(seq.getSequenceFeatures()); - assertSame(seq.getSequenceFeatures(), derived.getSequenceFeatures()); + assertNull(sq.sequenceFeatures); + assertNull(derived.sequenceFeatures); + // derived sequence should access dataset sequence features + assertNotNull(sq.getSequenceFeatures()); + assertArrayEquals(sq.getSequenceFeatures(), + derived.getSequenceFeatures()); } /** @@ -467,6 +544,8 @@ public class SequenceTest seq1.setDescription("description"); seq1.addAlignmentAnnotation(new AlignmentAnnotation("label", "desc", 1.3d)); + // JAL-2046 - what is the contract for using a derived sequence's + // addSequenceFeature ? seq1.addSequenceFeature(new SequenceFeature("type", "desc", 22, 33, 12.4f, "group")); seq1.addPDBId(new PDBEntry("1A70", "B", Type.PDB, "File")); @@ -514,7 +593,11 @@ public class SequenceTest // copy has a copy of the sequence feature: SequenceFeature[] sfs = copy.getSequenceFeatures(); assertEquals(1, sfs.length); - assertFalse(sfs[0] == seq1.getSequenceFeatures()[0]); + if (seq1.getDatasetSequence()!=null && copy.getDatasetSequence()==seq1.getDatasetSequence()) { + assertTrue(sfs[0] == seq1.getSequenceFeatures()[0]); + } else { + assertFalse(sfs[0] == seq1.getSequenceFeatures()[0]); + } assertTrue(sfs[0].equals(seq1.getSequenceFeatures()[0])); // copy has a copy of the PDB entry