}
/**
+ * assert wrapper: tests all references in the given alignment are consistent
+ *
+ * @param alignment
+ */
+ public static void assertAlignmentDatasetRefs(AlignmentI alignment)
+ {
+ verifyAlignmentDatasetRefs(alignment, true, null);
+ }
+
+ /**
+ * assert wrapper: tests all references in the given alignment are consistent
+ *
+ * @param alignment
+ * @param message
+ * - prefixed to any assert failed messages
+ */
+ public static void assertAlignmentDatasetRefs(AlignmentI alignment,
+ String message)
+ {
+ verifyAlignmentDatasetRefs(alignment, true, message);
+ }
+
+ /**
* verify sequence and dataset references are properly contained within
* dataset
*
* - the alignmentI object to verify (either alignment or dataset)
* @param raiseAssert
* - when set, testng assertions are raised.
+ * @param message
+ * - null or a string message to prepend to the assert failed messages.
* @return true if alignment references were in order, otherwise false.
*/
public static boolean verifyAlignmentDatasetRefs(AlignmentI alignment,
- boolean raiseAssert)
+ boolean raiseAssert, String message)
{
+ if (message==null) { message = ""; }
if (alignment == null)
{
if (raiseAssert)
{
- Assert.fail("Alignment for verification was null.");
+ Assert.fail(message+"Alignment for verification was null.");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail("Alignment contained a sequence who's dataset sequence has a second dataset reference.");
+ Assert.fail(message+" Alignment contained a sequence who's dataset sequence has a second dataset reference.");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail("Alignment contained a sequence who's dataset sequence was not in the dataset.");
+ Assert.fail(message+" Alignment contained a sequence who's dataset sequence was not in the dataset.");
}
return false;
}
}
- return verifyAlignmentDatasetRefs(alignment.getDataset(), raiseAssert);
+ return verifyAlignmentDatasetRefs(alignment.getDataset(), raiseAssert, message);
}
else
{
+ int dsp = -1;
// verify all dataset sequences
for (SequenceI seqds : alignment.getSequences())
{
+ dsp++;
if (seqds.getDatasetSequence() != null)
{
if (raiseAssert)
{
- Assert.fail("Dataset contained a sequence with non-null dataset reference (ie not a dataset sequence!)");
+ Assert.fail(message+" Dataset contained a sequence with non-null dataset reference (ie not a dataset sequence!)");
+ }
+ 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 (raiseAssert)
{
- Assert.fail("DBRefEntry for sequence in alignment had map to sequence which was not a dataset sequence");
+ Assert.fail(message+" DBRefEntry for sequence in alignment had map to sequence which was not a dataset sequence");
}
return false;
{
if (raiseAssert)
{
- Assert.fail("DBRefEntry for sequence in alignment had map to sequence not in dataset");
+ Assert.fail(message+" DBRefEntry for sequence in alignment had map to sequence not in dataset");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail("CodonFrame-SSM-FromSeq is not a dataset sequence");
+ Assert.fail(message+" CodonFrame-SSM-FromSeq is not a dataset sequence");
}
return false;
}
if (raiseAssert)
{
- Assert.fail("CodonFrame-SSM-FromSeq is not contained in dataset");
+ Assert.fail(message+" CodonFrame-SSM-FromSeq is not contained in dataset");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail("CodonFrame-SSM-Mapping-ToSeq is not a dataset sequence");
+ Assert.fail(message+" CodonFrame-SSM-Mapping-ToSeq is not a dataset sequence");
}
return false;
}
if (raiseAssert)
{
- Assert.fail("CodonFrame-SSM-Mapping-ToSeq is not contained in dataset");
+ Assert.fail(message+" CodonFrame-SSM-Mapping-ToSeq is not contained in dataset");
}
return false;
}
try
{
- Assert.assertTrue(verifyAlignmentDatasetRefs(al, true),
+ Assert.assertTrue(verifyAlignmentDatasetRefs(al, true, null),
"Valid test alignment failed when raiseAsserts enabled:"
+ msg);
} catch (AssertionError ae)
+ msg, ae);
}
// also check validation passes with asserts disabled
- Assert.assertTrue(verifyAlignmentDatasetRefs(al, false),
- "Valid test alignment failed when raiseAsserts disabled:"
+ Assert.assertTrue(verifyAlignmentDatasetRefs(al, false, null),
+ "Valid test alignment tested false when raiseAsserts disabled:"
+ msg);
}
else
{
+ boolean assertRaised = false;
try
{
- Assert.assertFalse(verifyAlignmentDatasetRefs(al, true));
- 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),
- "Invalid test alignment passed when raiseAsserts disabled:"
+ Assert.assertFalse(verifyAlignmentDatasetRefs(al, false, null),
+ "Invalid test alignment tested true when raiseAsserts disabled:"
+ msg);
}
}
al,
true,
"verify should have passed once all sequences involved in alCodonFrame were added to dataset");
+ al.getDataset().addSequence(sqanotherout);
+ assertVerifyAlignment(al, false,
+ "verify should have failed when a sequence was added twice to the dataset");
}
/*