From c784b1b825eada577c28a1ce0c807e6fed1fb392 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 4 May 2017 14:02:24 +0100 Subject: [PATCH] JAL-2507 JAL-2509 new assert to compare secondary structure in two annotation rows --- test/jalview/io/StockholmFileTest.java | 72 ++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 27 deletions(-) diff --git a/test/jalview/io/StockholmFileTest.java b/test/jalview/io/StockholmFileTest.java index 4028913..e9edd1b 100644 --- a/test/jalview/io/StockholmFileTest.java +++ b/test/jalview/io/StockholmFileTest.java @@ -201,8 +201,9 @@ public class StockholmFileTest { 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); @@ -310,8 +311,9 @@ public class StockholmFileTest { 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); } } } @@ -333,39 +335,57 @@ public class StockholmFileTest } } - /* - * 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 @@ -375,7 +395,7 @@ public class StockholmFileTest } else { - System.err.println("Annotation Element Mismatch\nElement " + fail("Annotation Element Mismatch\nElement " + i + " in original: " + (annot_or.annotations[i] == null ? "is null" @@ -385,9 +405,7 @@ public class StockholmFileTest + " in new: " + (annot_new.annotations[i] == null ? "is null" : annot_new.annotations[i].toString())); - return false; } } - return true; } } -- 1.7.10.2