JAL-2154 patch verifyAlignment so it fails for duplicate entries for same SequenceI...
[jalview.git] / test / jalview / datamodel / AlignmentTest.java
index 915d860..379a9c5 100644 (file)
@@ -178,9 +178,11 @@ public class AlignmentTest
     }
     else
     {
+      int dsp = -1;
       // verify all dataset sequences
       for (SequenceI seqds : alignment.getSequences())
       {
+        dsp++;
         if (seqds.getDatasetSequence() != null)
         {
           if (raiseAssert)
@@ -189,6 +191,18 @@ public class AlignmentTest
           }
           return false;
         }
+        int foundp = alignment.findIndex(seqds);
+        if (foundp != dsp)
+        {
+          if (raiseAssert)
+          {
+            Assert.fail(message
+                    + " Dataset sequence array contains a reference at "
+                    + dsp + " to a sequence first seen at " + foundp + " ("
+                    + seqds.toString() + ")");
+          }
+          return false;
+        }
         if (seqds.getDBRefs() != null)
         {
           for (DBRefEntry dbr : seqds.getDBRefs())
@@ -296,23 +310,28 @@ public class AlignmentTest
       }
       // also check validation passes with asserts disabled
       Assert.assertTrue(verifyAlignmentDatasetRefs(al, false, null),
-              "Valid test alignment failed when raiseAsserts disabled:"
+              "Valid test alignment tested false when raiseAsserts disabled:"
                       + msg);
     }
     else
     {
+      boolean assertRaised = false;
       try
       {
-        Assert.assertFalse(verifyAlignmentDatasetRefs(al, true, null));
-        Assert.fail("Invalid test alignment passed but no assertion raised when raiseAsserts enabled:"
-                + msg);
+        verifyAlignmentDatasetRefs(al, true, null);
       } catch (AssertionError ae)
       {
         // expected behaviour
+        assertRaised = true;
+      }
+      if (!assertRaised)
+      {
+        Assert.fail("Invalid test alignment passed when raiseAsserts enabled:"
+                + msg);
       }
       // also check validation passes with asserts disabled
       Assert.assertFalse(verifyAlignmentDatasetRefs(al, false, null),
-              "Invalid test alignment passed when raiseAsserts disabled:"
+              "Invalid test alignment tested true when raiseAsserts disabled:"
                       + msg);
     }
   }