3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertSame;
5 import static org.testng.AssertJUnit.assertTrue;
7 import jalview.datamodel.Alignment;
8 import jalview.datamodel.Sequence;
9 import jalview.datamodel.SequenceI;
10 import jalview.viewmodel.AlignmentViewport;
12 import java.awt.Component;
13 import java.util.List;
16 import javax.swing.JPanel;
18 import org.testng.annotations.AfterMethod;
19 import org.testng.annotations.BeforeMethod;
20 import org.testng.annotations.Test;
22 public class PaintRefresherTest
24 // TODO would prefer PaintRefresher to be a single rather than static
28 PaintRefresher.components.clear();
32 public void tearDown()
34 PaintRefresher.components.clear();
38 public void testRegister()
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");
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));
64 public void testRemoveComponent()
66 Map<String, List<Component>> registered = PaintRefresher.components;
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());
75 * Add then remove one item
77 PaintRefresher.Register(jp, "11");
78 PaintRefresher.RemoveComponent(jp);
79 assertTrue(registered.isEmpty());
82 * Add one item under two ids, then remove it. It is removed from both ids,
83 * and the now empty id is removed.
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));
96 public void testGetAssociatedPanels()
98 SequenceI [] seqs = new SequenceI[]{new Sequence("", "ABC")};
99 Alignment al = new Alignment(seqs);
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.
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]);
114 panels = PaintRefresher.getAssociatedPanels(av.getSequenceSetId() + 1);
115 assertEquals(0, panels.length);