3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertSame;
5 import static org.junit.Assert.assertTrue;
6 import jalview.datamodel.Alignment;
7 import jalview.datamodel.Sequence;
8 import jalview.datamodel.SequenceI;
9 import jalview.viewmodel.AlignmentViewport;
11 import java.awt.Component;
12 import java.util.List;
15 import javax.swing.JPanel;
17 import org.junit.After;
18 import org.junit.Before;
19 import org.junit.Test;
21 public class PaintRefresherTest
23 // TODO would prefer PaintRefresher to be a single rather than static
27 PaintRefresher.components.clear();
31 public void tearDown()
33 PaintRefresher.components.clear();
37 public void testRegister()
39 JPanel jp = new JPanel();
40 JPanel jp2 = new JPanel();
41 JPanel jp3 = new JPanel();
42 JPanel jp4 = new JPanel();
43 PaintRefresher.Register(jp, "22");
44 PaintRefresher.Register(jp, "22");
45 PaintRefresher.Register(jp2, "22");
46 PaintRefresher.Register(jp3, "33");
47 PaintRefresher.Register(jp3, "44");
48 PaintRefresher.Register(jp4, "44");
50 Map<String, List<Component>> registered = PaintRefresher.components;
51 assertEquals(3, registered.size());
52 assertEquals(2, registered.get("22").size());
53 assertEquals(1, registered.get("33").size());
54 assertEquals(2, registered.get("44").size());
55 assertTrue(registered.get("22").contains(jp));
56 assertTrue(registered.get("22").contains(jp2));
57 assertTrue(registered.get("33").contains(jp3));
58 assertTrue(registered.get("44").contains(jp3));
59 assertTrue(registered.get("44").contains(jp4));
63 public void testRemoveComponent()
65 Map<String, List<Component>> registered = PaintRefresher.components;
67 // no error with an empty PaintRefresher
68 JPanel jp = new JPanel();
69 JPanel jp2 = new JPanel();
70 PaintRefresher.RemoveComponent(jp);
71 assertTrue(registered.isEmpty());
74 * Add then remove one item
76 PaintRefresher.Register(jp, "11");
77 PaintRefresher.RemoveComponent(jp);
78 assertTrue(registered.isEmpty());
81 * Add one item under two ids, then remove it. It is removed from both ids,
82 * and the now empty id is removed.
84 PaintRefresher.Register(jp, "11");
85 PaintRefresher.Register(jp, "22");
86 PaintRefresher.Register(jp2, "22");
87 PaintRefresher.RemoveComponent(jp);
88 // "11" is removed as now empty, only 22/jp2 left
89 assertEquals(1, registered.size());
90 assertEquals(1, registered.get("22").size());
91 assertTrue(registered.get("22").contains(jp2));
95 public void testGetAssociatedPanels()
97 SequenceI [] seqs = new SequenceI[]{new Sequence("", "ABC")};
98 Alignment al = new Alignment(seqs);
101 * AlignFrame constructor has side-effects: AlignmentPanel is constructed,
102 * and SeqCanvas, IdPanel, AlignmentPanel are all registered under the
103 * sequence set id of the viewport.
105 AlignmentViewport av = new AlignViewport(al);
106 AlignFrame af = new AlignFrame(al, 4, 1);
107 AlignmentPanel ap1 = af.alignPanel;
108 AlignmentPanel[] panels = PaintRefresher.getAssociatedPanels(av
109 .getSequenceSetId());
110 assertEquals(1, panels.length);
111 assertSame(ap1, panels[0]);
113 panels = PaintRefresher.getAssociatedPanels(av.getSequenceSetId() + 1);
114 assertEquals(0, panels.length);