b5754788824fadafe0f21800de304923023e72b6
[jalview.git] / test / jalview / gui / AnnotationRowFilterTest.java
1 package jalview.gui;
2
3 import static org.testng.Assert.assertEquals;
4
5 import jalview.bin.Cache;
6 import jalview.datamodel.AlignmentAnnotation;
7 import jalview.datamodel.AlignmentI;
8 import jalview.datamodel.SequenceI;
9 import jalview.io.DataSourceType;
10 import jalview.io.FileLoader;
11
12 import java.util.Vector;
13
14 import org.testng.annotations.BeforeClass;
15 import org.testng.annotations.Test;
16
17 /**
18  * Tests for methods of base class of annotation column or colour chooser
19  */
20 public class AnnotationRowFilterTest
21 {
22   AlignFrame af;
23
24   private AnnotationRowFilter testee;
25
26   @BeforeClass(alwaysRun = true)
27   public void setUp()
28   {
29     Cache.loadProperties("test/jalview/io/testProps.jvprops");
30     Cache.applicationProperties.setProperty("SHOW_ANNOTATIONS",
31             Boolean.TRUE.toString());
32     Cache.applicationProperties.setProperty(Preferences.SHOW_AUTOCALC_ABOVE,
33             Boolean.TRUE.toString());
34     af = new FileLoader().LoadFileWaitTillLoaded("examples/uniref50.fa",
35             DataSourceType.FILE);
36     testee = new AnnotationRowFilter(af.viewport, af.alignPanel)
37     {
38       @Override
39       public void valueChanged(boolean updateAllAnnotation)
40       {
41       }
42
43       @Override
44       public void updateView()
45       {
46       }
47
48       @Override
49       public void reset()
50       {
51       }
52     };
53   }
54
55   /**
56    * Test the method that builds the drop-down list of annotations to choose
57    * from for colour by annotation or select columns by annotation
58    */
59   @Test(groups = "Functional")
60   public void testGetAnnotationItems()
61   {
62     AlignmentI al = af.getViewport().getAlignment();
63     SequenceI seq1 = al.findSequenceMatch("FER_CAPAA")[0];
64     SequenceI seq2 = al.findSequenceMatch("FER_BRANA")[0];
65
66     AlignmentAnnotation ann1 = new AlignmentAnnotation("ann1Label", "ann1",
67             null);
68     al.addAnnotation(ann1);
69     AlignmentAnnotation ann2 = new AlignmentAnnotation("Significance",
70             "ann2", null);
71     al.addAnnotation(ann2);
72     /*
73      * a second Significance alignment annotation
74      */
75     AlignmentAnnotation ann2a = new AlignmentAnnotation("Significance",
76             "ann2", null);
77     al.addAnnotation(ann2a);
78
79     AlignmentAnnotation ann3 = new AlignmentAnnotation("Jronn", "Jronn",
80             null);
81     ann3.setSequenceRef(seq1);
82     al.addAnnotation(ann3);
83     AlignmentAnnotation ann4 = new AlignmentAnnotation("Jronn", "Jronn",
84             null);
85     ann4.setSequenceRef(seq2);
86     al.addAnnotation(ann4);
87     AlignmentAnnotation ann5 = new AlignmentAnnotation("Jnet", "Jnet",
88             null);
89     ann5.setSequenceRef(seq2);
90     al.addAnnotation(ann5);
91     /*
92      * a second Jnet annotation for FER_BRANA
93      */
94     AlignmentAnnotation ann6 = new AlignmentAnnotation("Jnet", "Jnet",
95             null);
96     ann6.setSequenceRef(seq2);
97     al.addAnnotation(ann6);
98
99     /*
100      * drop-down items with 'Per-sequence only' not checked
101      */
102     Vector<String> items = testee.getAnnotationItems(false);
103     assertEquals(items.toString(),
104             "[Conservation, Quality, Consensus, Occupancy, ann1Label, Significance, Significance_1, Jronn_FER_CAPAA, Jronn_FER_BRANA, Jnet_FER_BRANA, Jnet_FER_BRANA_2]");
105     assertEquals(testee.getAnnotationMenuLabel(ann1), "ann1Label");
106     assertEquals(testee.getAnnotationMenuLabel(ann2), "Significance");
107     assertEquals(testee.getAnnotationMenuLabel(ann2a), "Significance_1");
108     assertEquals(testee.getAnnotationMenuLabel(ann3), "Jronn_FER_CAPAA");
109     assertEquals(testee.getAnnotationMenuLabel(ann4), "Jronn_FER_BRANA");
110     assertEquals(testee.getAnnotationMenuLabel(ann5), "Jnet_FER_BRANA");
111     assertEquals(testee.getAnnotationMenuLabel(ann6), "Jnet_FER_BRANA_2");
112
113     /*
114      * drop-down items with 'Per-sequence only' checked
115      */
116     items = testee.getAnnotationItems(true);
117     assertEquals(items.toString(), "[Jronn, Jnet]");
118     // the first annotation of the type is associated with the menu item
119     assertEquals(testee.getAnnotationMenuLabel(ann3), "Jronn");
120     assertEquals(testee.getAnnotationMenuLabel(ann5), "Jnet");
121   }
122 }