JAL-2023 CDS sequences added to / share alignment dataset
[jalview.git] / test / jalview / analysis / AlignmentUtilsTests.java
index f9c1a11..abe3f55 100644 (file)
@@ -1024,6 +1024,8 @@ public class AlignmentUtilsTests
             null));
     dna2.addSequenceFeature(new SequenceFeature("CDS", "cds5", 13, 15, 0f,
             null));
+    AlignmentI dna = new Alignment(new SequenceI[] { dna1, dna2 });
+    dna.setDataset(null);
 
     List<AlignedCodonFrame> mappings = new ArrayList<AlignedCodonFrame>();
     MapList map = new MapList(new int[] { 4, 6, 10, 12 },
@@ -1038,7 +1040,7 @@ public class AlignmentUtilsTests
     mappings.add(acf);
 
     AlignmentI cds = AlignmentUtils.makeCdsAlignment(new SequenceI[] {
-        dna1, dna2 }, mappings, '-');
+        dna1, dna2 }, mappings, dna);
     assertEquals(2, cds.getSequences().size());
     assertEquals("---GGG---TTT---", cds.getSequenceAt(0)
             .getSequenceAsString());
@@ -1046,6 +1048,15 @@ public class AlignmentUtilsTests
             .getSequenceAsString());
 
     /*
+     * verify shared, extended alignment dataset
+     */
+    assertSame(dna.getDataset(), cds.getDataset());
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cds.getSequenceAt(0).getDatasetSequence()));
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cds.getSequenceAt(1).getDatasetSequence()));
+
+    /*
      * Verify updated mappings
      */
     assertEquals(2, mappings.size());
@@ -1210,8 +1221,10 @@ public class AlignmentUtilsTests
      * Create the Exon alignment; also replaces the dna-to-protein mappings with
      * exon-to-protein and exon-to-dna mappings
      */
+    AlignmentI dna = new Alignment(new SequenceI[] { dna1 });
+    dna.setDataset(null);
     AlignmentI exal = AlignmentUtils.makeCdsAlignment(
-            new SequenceI[] { dna1 }, mappings, '-');
+            new SequenceI[] { dna1 }, mappings, dna);
 
     /*
      * Verify we have 3 cds sequences, mapped to pep1/2/3 respectively
@@ -1219,6 +1232,20 @@ public class AlignmentUtilsTests
     List<SequenceI> cds = exal.getSequences();
     assertEquals(3, cds.size());
 
+    /*
+     * verify shared, extended alignment dataset
+     */
+    assertSame(exal.getDataset(), dna.getDataset());
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cds.get(0).getDatasetSequence()));
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cds.get(1).getDatasetSequence()));
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cds.get(2).getDatasetSequence()));
+
+    /*
+     * verify aligned cds sequences and their xrefs
+     */
     SequenceI cdsSeq = cds.get(0);
     assertEquals("---GGG---TTT", cdsSeq.getSequenceAsString());
     assertEquals("dna1|A12345", cdsSeq.getName());
@@ -1562,13 +1589,25 @@ public class AlignmentUtilsTests
     acf.addMap(dna2.getDatasetSequence(), pep2.getDatasetSequence(), map);
     mappings.add(acf);
   
+    AlignmentI dna = new Alignment(new SequenceI[] { dna1, dna2, dna3 });
+    dna.setDataset(null);
     AlignmentI cds = AlignmentUtils.makeCdsAlignment(new SequenceI[] {
-        dna1, dna2, dna3 }, mappings, '-');
-    assertEquals(2, cds.getSequences().size());
-    assertEquals("GGGCCCTTTGGG", cds.getSequenceAt(0).getSequenceAsString());
-    assertEquals("GGGCC---TGGG", cds.getSequenceAt(1).getSequenceAsString());
+        dna1, dna2, dna3 }, mappings, dna);
+    List<SequenceI> cdsSeqs = cds.getSequences();
+    assertEquals(2, cdsSeqs.size());
+    assertEquals("GGGCCCTTTGGG", cdsSeqs.get(0).getSequenceAsString());
+    assertEquals("GGGCC---TGGG", cdsSeqs.get(1).getSequenceAsString());
   
     /*
+     * verify shared, extended alignment dataset
+     */
+    assertSame(dna.getDataset(), cds.getDataset());
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cdsSeqs.get(0).getDatasetSequence()));
+    assertTrue(dna.getDataset().getSequences()
+            .contains(cdsSeqs.get(1).getDatasetSequence()));
+
+    /*
      * Verify updated mappings
      */
     assertEquals(2, mappings.size());