}
else
{
+ int dsp = -1;
// verify all dataset sequences
for (SequenceI seqds : alignment.getSequences())
{
+ dsp++;
if (seqds.getDatasetSequence() != null)
{
if (raiseAssert)
}
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())
}
// 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);
}
}
al.getDataset().addSequence(sqanotherout);
assertVerifyAlignment(al, false,
"verify should have failed when a sequence was added twice to the dataset");
+ al.getDataset().deleteSequence(sqanotherout);
+ assertVerifyAlignment(al, true,
+ "verify should have passed after duplicate entry for sequence was removed");
}
/*
}
@Test(groups = "Functional")
+ public void testAddSequencePreserveDatasetIntegrity()
+ {
+ Sequence seq = new Sequence("testSeq", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ Alignment align = new Alignment(new SequenceI[] { seq });
+ align.createDatasetAlignment();
+ AlignmentI ds = align.getDataset();
+ SequenceI copy = new Sequence(seq);
+ copy.insertCharAt(3, 5, '-');
+ align.addSequence(copy);
+ Assert.assertEquals(align.getDataset().getHeight(), 1,
+ "Dataset shouldn't have more than one sequence.");
+
+ Sequence seq2 = new Sequence("newtestSeq", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ align.addSequence(seq2);
+ Assert.assertEquals(align.getDataset().getHeight(), 2,
+ "Dataset should now have two sequences.");
+
+ assertAlignmentDatasetRefs(align,
+ "addSequence broke dataset reference integrity");
+ }
+ @Test(groups = "Functional")
public void getVisibleStartAndEndIndexTest()
{
Sequence seq = new Sequence("testSeq", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");