*/
package jalview.io;
+import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.HiddenColumns;
-import jalview.gui.JvOptionPane;
-import jalview.io.AnnotationFile.ViewDef;
-
+import java.awt.Color;
import java.io.File;
import java.util.Hashtable;
+import java.util.List;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.SequenceGroup;
+import jalview.gui.AlignFrame;
+import jalview.gui.JvOptionPane;
+import jalview.io.AnnotationFile.ViewDef;
+
public class AnnotationFileIOTest
{
+ "\nCouldn't complete Annotation file roundtrip input/output/input test for '"
+ annotFile + "'.");
}
+
+ @Test(groups="Functional")
+ public void testAnnotateAlignmentView()
+ {
+ long t1 = System.currentTimeMillis();
+ /*
+ * JAL-3779 test multiple groups of the same name get annotated
+ */
+ AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+ ">Seq1\nQRSIL\n>Seq2\nFTHND\n>Seq3\nRPVSL\n",
+ DataSourceType.PASTE);
+ long t2 = System.currentTimeMillis();
+ System.err.println("t0: " + (t2 - t1));
+ // seq1 and seq3 are in distinct groups both named Group1
+ String annotationFile = "JALVIEW_ANNOTATION\nSEQUENCE_GROUP\tGroup1\t*\t*\t1\n"
+ + "SEQUENCE_GROUP\tGroup2\t*\t*\t2\n"
+ + "SEQUENCE_GROUP\tGroup1\t*\t*\t3\n"
+ + "PROPERTIES\tGroup1\toutlineColour=blue\tidColour=red\n";
+ new AnnotationFile().annotateAlignmentView(af.getViewport(), annotationFile, DataSourceType.PASTE);
+
+ AlignmentI al = af.getViewport().getAlignment();
+ List<SequenceGroup> groups = al.getGroups();
+ assertEquals(3, groups.size());
+ SequenceGroup sg = groups.get(0);
+ assertEquals("Group1", sg.getName());
+ assertTrue(sg.contains(al.getSequenceAt(0)));
+ assertEquals(Color.BLUE, sg.getOutlineColour());
+ assertEquals(Color.RED, sg.getIdColour());
+ sg = groups.get(1);
+ assertEquals("Group2", sg.getName());
+ assertTrue(sg.contains(al.getSequenceAt(1)));
+
+ /*
+ * the bug fix: a second group of the same name is also given properties
+ */
+ sg = groups.get(2);
+ assertEquals("Group1", sg.getName());
+ assertTrue(sg.contains(al.getSequenceAt(2)));
+ assertEquals(Color.BLUE, sg.getOutlineColour());
+ assertEquals(Color.RED, sg.getIdColour());
+ }
}