1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.richclient.command.config;
17
18 import java.awt.event.KeyEvent;
19 import java.util.HashMap;
20 import java.util.Iterator;
21 import java.util.Map;
22
23 import javax.swing.JButton;
24 import javax.swing.JMenuItem;
25 import javax.swing.KeyStroke;
26
27 import junit.framework.Assert;
28 import junit.framework.TestCase;
29
30 import org.springframework.richclient.core.LabelInfo;
31
32
33
34
35
36 public class CommandButtonLabelInfoTests extends TestCase {
37
38 private LabelInfo labelInfo;
39
40 private KeyStroke accelerator;
41
42 private Map invalidLabelDescriptors;
43
44 public static void pass() {
45
46 }
47
48
49
50
51 public CommandButtonLabelInfoTests() {
52 this.invalidLabelDescriptors = new HashMap();
53 this.invalidLabelDescriptors.put("@", "An @ symbol must be followed by a KeyStroke.");
54 this.invalidLabelDescriptors.put("Test@Bogus", "Invalid KeyStroke format.");
55 }
56
57
58
59
60 protected void setUp() throws Exception {
61 super.setUp();
62 labelInfo = new LabelInfo("Test", 'T', 3);
63 accelerator = KeyStroke.getKeyStroke("ctrl T");
64
65
66 assertNotNull(accelerator);
67 }
68
69 public void testConstructorLabelInfo() {
70 CommandButtonLabelInfo info = new CommandButtonLabelInfo(labelInfo, accelerator);
71
72 assertEquals(labelInfo.getText(), info.getText());
73 assertEquals(labelInfo.getMnemonic(), info.getMnemonic());
74 assertEquals(labelInfo.getMnemonicIndex(), info.getMnemonicIndex());
75 assertEquals(accelerator, info.getAccelerator());
76 }
77
78 public void testConstructorLabelInfoNoAccelerator() {
79 CommandButtonLabelInfo info = new CommandButtonLabelInfo(labelInfo, null);
80
81 assertEquals(labelInfo.getText(), info.getText());
82 assertEquals(labelInfo.getMnemonic(), info.getMnemonic());
83 assertEquals(labelInfo.getMnemonicIndex(), info.getMnemonicIndex());
84 assertNull(info.getAccelerator());
85 }
86
87 public void testConstructorText() {
88 CommandButtonLabelInfo info = new CommandButtonLabelInfo("Test");
89
90 assertEquals("Test", info.getText());
91 assertEquals(0, info.getMnemonic());
92 assertEquals(-1, info.getMnemonicIndex());
93 assertNull(info.getAccelerator());
94 }
95
96 public void testConstructorNullAsLabelInfo() {
97 try {
98 new CommandButtonLabelInfo(null, accelerator);
99 fail("Should throw IllegalArgumentException");
100 }
101 catch (IllegalArgumentException e) {
102 pass();
103 }
104 }
105
106 public void testConfigureNull() {
107 CommandButtonLabelInfo info = new CommandButtonLabelInfo("test");
108 try {
109 info.configure(null);
110 fail("Should throw IllegalArgumentException");
111 }
112 catch (IllegalArgumentException e) {
113 pass();
114 }
115 }
116
117 public void testConfigureJButton() {
118 CommandButtonLabelInfo info = new CommandButtonLabelInfo(labelInfo, accelerator);
119
120
121 JButton button = new JButton();
122 info.configure(button);
123
124 assertEquals(info.getText(), button.getText());
125 assertEquals(info.getMnemonic(), button.getMnemonic());
126 assertEquals(info.getMnemonicIndex(), button.getDisplayedMnemonicIndex());
127 }
128
129 public void testConfigureJMenuItem() {
130 CommandButtonLabelInfo info = new CommandButtonLabelInfo(labelInfo, accelerator);
131
132
133 JMenuItem button = new JMenuItem();
134 info.configure(button);
135
136 assertEquals(info.getText(), button.getText());
137 assertEquals(info.getMnemonic(), button.getMnemonic());
138 assertEquals(info.getMnemonicIndex(), button.getDisplayedMnemonicIndex());
139 assertEquals(accelerator, button.getAccelerator());
140 }
141
142
143 public void testCreateButtonLabelInfoNoAccelerator() {
144 CommandButtonLabelInfo info = CommandButtonLabelInfo.valueOf("S\\&ave with an \\@ &as");
145 System.out.println("XXXXXXXXXXXXXXX " + info.getText());
146 System.out.println("XXXXXXXXXXX 16th char = " + info.getText().charAt(16));
147 assertEquals("S&ave with an @ as", info.getText());
148 assertEquals(KeyEvent.VK_A, info.getMnemonic());
149 assertEquals(16, info.getMnemonicIndex());
150 assertNull(info.getAccelerator());
151 }
152
153 public void testCreateButtonLabelInfo() {
154 CommandButtonLabelInfo info = CommandButtonLabelInfo.valueOf("S\\@ve &as@ctrl A");
155
156 assertEquals("S@ve as", info.getText());
157 assertEquals(KeyEvent.VK_A, info.getMnemonic());
158 assertEquals(5, info.getMnemonicIndex());
159 assertNotNull("ctrl A is invalid keystroke", info.getAccelerator());
160 assertEquals(KeyStroke.getKeyStroke("ctrl A"), info.getAccelerator());
161 }
162
163 public void testCreateButtonLabelInfoInvalidAccelerator() {
164
165 try {
166 CommandButtonLabelInfo.valueOf("Save &as@Bogus keystroke");
167 Assert.fail("Should have thrown an IllegalArgumentException for invalid KeyStroke format");
168 }
169 catch (IllegalArgumentException e) {
170
171 }
172
173 }
174
175
176
177
178 public void testInvalidSyntax() {
179
180 Iterator entryIterator = this.invalidLabelDescriptors.entrySet().iterator();
181
182 while (entryIterator.hasNext()) {
183
184 Map.Entry entry = (Map.Entry) entryIterator.next();
185
186 try {
187 CommandButtonLabelInfo.valueOf((String) entry.getKey());
188 Assert.fail("Should have thrown an IllegalArgumentException for label descriptor ["
189 + entry.getKey()
190 + "] due to "
191 + entry.getValue());
192 }
193 catch (IllegalArgumentException e) {
194
195 }
196
197 }
198
199 }
200
201 }