{
if (aa_new.length > i)
{
- assertTrue("Different alignment annotation at position " + i,
- equalss(aa_original[i], aa_new[i]));
+ assertEqualSecondaryStructure(
+ "Different alignment annotation at position " + i,
+ aa_original[i], aa_new[i]);
// compare graphGroup or graph properties - needed to verify JAL-1299
assertEquals("Graph type not identical.", aa_original[i].graph,
aa_new[i].graph);
{
annot_original = al.getSequenceAt(i).getAnnotation()[j];
annot_new = al_input.getSequenceAt(in).getAnnotation()[j];
- assertTrue("Different annotation elements",
- equalss(annot_original, annot_new));
+ assertEqualSecondaryStructure(
+ "Different annotation elements", annot_original,
+ annot_new);
}
}
}
}
}
- /*
- * compare annotations
- */
- private static boolean equalss(AlignmentAnnotation annot_or,
+ private static void assertEqualSecondaryStructure(String message,
+ AlignmentAnnotation annot_or,
AlignmentAnnotation annot_new)
{
+ // TODO: test to cover this assert behaves correctly for all allowed
+ // variations of secondary structure annotation row equivalence
if (annot_or.annotations.length != annot_new.annotations.length)
{
- System.err.println("Different lengths for annotation row elements: "
+ fail("Different lengths for annotation row elements: "
+ annot_or.annotations.length + "!="
+ annot_new.annotations.length);
- return false;
}
+ boolean isRna = annot_or.isRNA();
+ assertTrue("Expected " + (isRna ? " valid RNA " : " no RNA ")
+ + " secondary structure in the row.",
+ isRna == annot_new.isRNA());
for (int i = 0; i < annot_or.annotations.length; i++)
{
Annotation an_or = annot_or.annotations[i], an_new = annot_new.annotations[i];
if (an_or != null && an_new != null)
{
- if (!an_or.displayCharacter.trim().equals(
- an_new.displayCharacter.trim())
- || !("" + an_or.secondaryStructure).trim().equals(
- ("" + an_new.secondaryStructure).trim())
- || (an_or.description != an_new.description && !((an_or.description == null && an_new.description
- .trim().length() == 0)
- || (an_new.description == null && an_or.description
- .trim().length() == 0) || an_or.description
- .trim().equals(an_new.description.trim()))))
+
+ if (isRna)
{
- System.err.println("Annotation Element Mismatch\nElement " + i
- + " in original: " + annot_or.annotations[i].toString()
- + "\nElement " + i + " in new: "
- + annot_new.annotations[i].toString());
- return false;
+ if (an_or.secondaryStructure != an_new.secondaryStructure
+ || an_or.value != an_new.value)
+ {
+ fail("Different RNA secondary structure at column " + i
+ + " expected: [" + annot_or.annotations[i].toString()
+ + "] but got: [" + annot_new.annotations[i].toString()
+ + "]");
+ }
+ }
+ else
+ {
+ // not RNA secondary structure, so expect all elements to match...
+ if (!an_or.displayCharacter.trim().equals(
+ an_new.displayCharacter.trim())
+ || !("" + an_or.secondaryStructure).trim().equals(
+ ("" + an_new.secondaryStructure).trim())
+ || (an_or.description != an_new.description && !((an_or.description == null && an_new.description
+ .trim().length() == 0)
+ || (an_new.description == null && an_or.description
+ .trim().length() == 0) || an_or.description
+ .trim().equals(an_new.description.trim()))))
+ {
+ fail("Annotation Element Mismatch\nElement " + i
+ + " in original: " + annot_or.annotations[i].toString()
+ + "\nElement " + i + " in new: "
+ + annot_new.annotations[i].toString());
+ }
}
}
else if (annot_or.annotations[i] == null
}
else
{
- System.err.println("Annotation Element Mismatch\nElement "
+ fail("Annotation Element Mismatch\nElement "
+ i
+ " in original: "
+ (annot_or.annotations[i] == null ? "is null"
+ " in new: "
+ (annot_new.annotations[i] == null ? "is null"
: annot_new.annotations[i].toString()));
- return false;
}
}
- return true;
}
}