develop merge
[jalview.git] / test / jalview / datamodel / SequenceTest.java
index 95755ee..ab11c09 100644 (file)
@@ -310,9 +310,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);
@@ -322,17 +326,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());
   }
@@ -395,9 +402,9 @@ public class SequenceTest
     assertSame(sq.getDatasetSequence(), derived.getDatasetSequence());
 
     assertNull(sq.sequenceFeatures);
-    // assertNull(derived.sequenceFeatures);
+    assertNull(derived.sequenceFeatures);
+    // derived sequence should access dataset sequence features
     assertNotNull(sq.getSequenceFeatures());
-    // derived sequence has a copy of the sequence features (is this right?)
     assertArrayEquals(sq.getSequenceFeatures(),
             derived.getSequenceFeatures());
   }
@@ -471,6 +478,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"));
@@ -518,7 +527,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