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;
14 import java.awt.Component;
15 import java.util.List;
18 import javax.swing.JPanel;
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 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]);
112 panels = PaintRefresher.getAssociatedPanels(av.getSequenceSetId() + 1);
113 assertEquals(0, panels.length);