JAL-1270 test suits import order refactor
[jalview.git] / test / jalview / gui / PaintRefresherTest.java
1 package jalview.gui;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertSame;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import jalview.datamodel.Alignment;
8 import jalview.datamodel.Sequence;
9 import jalview.datamodel.SequenceI;
10 import jalview.viewmodel.AlignmentViewport;
11
12 import java.awt.Component;
13 import java.util.List;
14 import java.util.Map;
15
16 import javax.swing.JPanel;
17
18 import org.testng.annotations.AfterMethod;
19 import org.testng.annotations.BeforeMethod;
20 import org.testng.annotations.Test;
21
22 public class PaintRefresherTest
23 {
24   // TODO would prefer PaintRefresher to be a single rather than static
25   @BeforeMethod
26   public void setUp()
27   {
28     PaintRefresher.components.clear();
29   }
30
31   @AfterMethod
32   public void tearDown()
33   {
34     PaintRefresher.components.clear();
35   }
36
37   @Test
38   public void testRegister()
39   {
40     JPanel jp = new JPanel();
41     JPanel jp2 = new JPanel();
42     JPanel jp3 = new JPanel();
43     JPanel jp4 = new JPanel();
44     PaintRefresher.Register(jp, "22");
45     PaintRefresher.Register(jp, "22");
46     PaintRefresher.Register(jp2, "22");
47     PaintRefresher.Register(jp3, "33");
48     PaintRefresher.Register(jp3, "44");
49     PaintRefresher.Register(jp4, "44");
50
51     Map<String, List<Component>> registered = PaintRefresher.components;
52     assertEquals(3, registered.size());
53     assertEquals(2, registered.get("22").size());
54     assertEquals(1, registered.get("33").size());
55     assertEquals(2, registered.get("44").size());
56     assertTrue(registered.get("22").contains(jp));
57     assertTrue(registered.get("22").contains(jp2));
58     assertTrue(registered.get("33").contains(jp3));
59     assertTrue(registered.get("44").contains(jp3));
60     assertTrue(registered.get("44").contains(jp4));
61   }
62
63   @Test
64   public void testRemoveComponent()
65   {
66     Map<String, List<Component>> registered = PaintRefresher.components;
67     
68     // no error with an empty PaintRefresher
69     JPanel jp = new JPanel();
70     JPanel jp2 = new JPanel();
71     PaintRefresher.RemoveComponent(jp);
72     assertTrue(registered.isEmpty());
73
74     /*
75      * Add then remove one item
76      */
77     PaintRefresher.Register(jp, "11");
78     PaintRefresher.RemoveComponent(jp);
79     assertTrue(registered.isEmpty());
80
81     /*
82      * Add one item under two ids, then remove it. It is removed from both ids,
83      * and the now empty id is removed.
84      */
85     PaintRefresher.Register(jp, "11");
86     PaintRefresher.Register(jp, "22");
87     PaintRefresher.Register(jp2, "22");
88     PaintRefresher.RemoveComponent(jp);
89     // "11" is removed as now empty, only 22/jp2 left
90     assertEquals(1, registered.size());
91     assertEquals(1, registered.get("22").size());
92     assertTrue(registered.get("22").contains(jp2));
93   }
94
95   @Test
96   public void testGetAssociatedPanels()
97   {
98     SequenceI [] seqs = new SequenceI[]{new Sequence("", "ABC")};
99     Alignment al = new Alignment(seqs);
100
101     /*
102      * AlignFrame constructor has side-effects: AlignmentPanel is constructed,
103      * and SeqCanvas, IdPanel, AlignmentPanel are all registered under the
104      * sequence set id of the viewport.
105      */
106     AlignmentViewport av = new AlignViewport(al);
107     AlignFrame af = new AlignFrame(al, 4, 1);
108     AlignmentPanel ap1 = af.alignPanel;
109     AlignmentPanel[] panels = PaintRefresher.getAssociatedPanels(av
110             .getSequenceSetId());
111     assertEquals(1, panels.length);
112     assertSame(ap1, panels[0]);
113     
114     panels = PaintRefresher.getAssociatedPanels(av.getSequenceSetId() + 1);
115     assertEquals(0, panels.length);
116   }
117 }