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;
10 import java.awt.Component;
11 import java.util.List;
14 import javax.swing.JPanel;
16 import org.junit.After;
17 import org.junit.Before;
18 import org.junit.Test;
20 public class PaintRefresherTest
22 // TODO would prefer PaintRefresher to be a single rather than static
26 PaintRefresher.components.clear();
30 public void tearDown()
32 PaintRefresher.components.clear();
36 public void testRegister()
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");
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));
62 public void testRemoveComponent()
64 Map<String, List<Component>> registered = PaintRefresher.components;
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());
73 * Add then remove one item
75 PaintRefresher.Register(jp, "11");
76 PaintRefresher.RemoveComponent(jp);
77 assertTrue(registered.isEmpty());
80 * Add one item under two ids, then remove it. It is removed from both ids,
81 * and the now empty id is removed.
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));
94 public void testGetAssociatedPanels()
96 SequenceI [] seqs = new SequenceI[]{new Sequence("", "ABC")};
97 Alignment al = new Alignment(seqs);
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.
104 AlignViewport 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]);
112 panels = PaintRefresher.getAssociatedPanels(av.getSequenceSetId() + 1);
113 assertEquals(0, panels.length);