X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FStockholmFileTest.java;h=4505f169e8c5737944e22847ab612088b3f1f934;hb=ab271f65ad7519b988efbfa04e32a0199d9bd8d4;hp=fc2ffdaffd2187e3e1af4ad057c5e584575a2841;hpb=3c2de0e2204842f88e58c1e8f5ef6251c99a84d5;p=jalview.git diff --git a/test/jalview/io/StockholmFileTest.java b/test/jalview/io/StockholmFileTest.java index fc2ffda..4505f16 100644 --- a/test/jalview/io/StockholmFileTest.java +++ b/test/jalview/io/StockholmFileTest.java @@ -1,6 +1,7 @@ package jalview.io; -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; @@ -9,8 +10,9 @@ import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.util.BitSet; +import java.util.HashMap; +import java.util.Map; import org.junit.Test; @@ -109,7 +111,7 @@ public class StockholmFileTest * 'secondary' or generated alignment from some datapreserving * transformation */ - private static void testAlignmentEquivalence(AlignmentI al, + public static void testAlignmentEquivalence(AlignmentI al, AlignmentI al_input) { assertNotNull("Original alignment was null", al); @@ -133,6 +135,7 @@ public class StockholmFileTest // we might want to revise this in future int aa_new_size = (aa_new == null ? 0 : aa_new.length), aa_original_size = (aa_original == null ? 0 : aa_original.length); + Map orig_groups=new HashMap(),new_groups=new HashMap(); if (aa_new != null && aa_original != null) { @@ -141,6 +144,25 @@ public class StockholmFileTest if (aa_new.length>i) { assertTrue("Different alignment annotation at position "+i, equalss(aa_original[i], aa_new[i])); + // compare graphGroup or graph properties - needed to verify JAL-1299 + assertTrue("Graph type not identical.",aa_original[i].graph==aa_new[i].graph); + assertTrue("Visibility not identical.", aa_original[i].visible==aa_new[i].visible); + assertTrue( + "Threshold line not identical.", + aa_original[i].threshold == null ? aa_new[i].threshold == null + : aa_original[i].threshold + .equals(aa_new[i].threshold)); + // graphGroup may differ, but pattern should be the same + Integer o_ggrp=new Integer(aa_original[i].graphGroup+2),n_ggrp=new Integer(aa_new[i].graphGroup+2); + BitSet orig_g=orig_groups.get(o_ggrp),new_g=new_groups.get(n_ggrp); + if (orig_g==null) { + orig_groups.put(o_ggrp,orig_g= new BitSet()); + } + if (new_g==null) { + new_groups.put(n_ggrp, new_g=new BitSet()); + } + assertTrue("Graph Group pattern differs at annotation "+i, orig_g.equals(new_g)); + orig_g.set(i); new_g.set(i); } else { System.err.println("No matching annotation row for "+aa_original[i].toString()); } @@ -209,7 +231,6 @@ public class StockholmFileTest .equals(sequenceFeatures_new[feat])); } } - // compare alignment annotation if (al.getSequenceAt(i).getAnnotation() != null && al_input.getSequenceAt(in).getAnnotation() != null) @@ -221,7 +242,7 @@ public class StockholmFileTest { annot_original = al.getSequenceAt(i).getAnnotation()[j]; annot_new = al_input.getSequenceAt(in).getAnnotation()[j]; - assertTrue("Different annotation", + assertTrue("Different annotation elements", equalss(annot_original, annot_new)); } } @@ -255,17 +276,15 @@ public class StockholmFileTest System.err.println("Different lengths for annotation row elements: "+annot_or.annotations.length +"!="+ annot_new.annotations.length); return false; } - // TODO: does not compare graphGroup or graph properties - // TODO: does not compare visibility 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 - .equals(an_new.displayCharacter) - || an_or.secondaryStructure != an_new.secondaryStructure + 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 == null || !an_or.description .equals(an_new.description))))