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