1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.richclient.settings.support;
17
18 import javax.swing.JTable;
19
20 import junit.framework.TestCase;
21
22 import org.springframework.richclient.settings.TransientSettings;
23
24
25
26
27 public class TableMementoTests extends TestCase {
28
29 private JTable table;
30
31 private TableMemento memento;
32
33 public void testSaveSelectionRowsWithoutSelection() {
34 TransientSettings settings = new TransientSettings();
35 memento.saveSelectedRows(settings);
36
37 assertFalse(settings.contains("table.selectedRows"));
38 }
39
40 public void testSaveSelectionRowsWithoutOneRow() {
41 TransientSettings settings = new TransientSettings();
42
43 table.getSelectionModel().setSelectionInterval(1, 1);
44 memento.saveSelectedRows(settings);
45 assertTrue(settings.contains("table.selectedRows"));
46 assertEquals("1", settings.getString("table.selectedRows"));
47 }
48
49 public void testSaveSelectionRowsWithoutTwoRows() {
50 TransientSettings settings = new TransientSettings();
51
52 table.getSelectionModel().setSelectionInterval(0, 0);
53 table.getSelectionModel().addSelectionInterval(2, 2);
54 memento.saveSelectedRows(settings);
55 assertTrue(settings.contains("table.selectedRows"));
56 assertEquals("0,2", settings.getString("table.selectedRows"));
57 }
58
59 public void testSaveSelectionRowsWithOneInterval() {
60 TransientSettings settings = new TransientSettings();
61
62 table.getSelectionModel().setSelectionInterval(0, 2);
63 table.getSelectionModel().addSelectionInterval(4, 4);
64 memento.saveSelectedRows(settings);
65 assertTrue(settings.contains("table.selectedRows"));
66 assertEquals("0-2,4", settings.getString("table.selectedRows"));
67 }
68
69 public void testSaveSelectionRowsWithTwoIntervals() {
70 TransientSettings settings = new TransientSettings();
71
72 table.getSelectionModel().setSelectionInterval(0, 1);
73 table.getSelectionModel().addSelectionInterval(3, 4);
74 memento.saveSelectedRows(settings);
75 assertTrue(settings.contains("table.selectedRows"));
76 assertEquals("0-1,3-4", settings.getString("table.selectedRows"));
77 }
78
79 public void testSaveColumnWidths() {
80 TransientSettings settings = new TransientSettings();
81
82 table.getColumnModel().getColumn(0).setWidth(30);
83 table.getColumnModel().getColumn(1).setWidth(120);
84 table.getColumnModel().getColumn(2).setWidth(50);
85 table.getColumnModel().getColumn(3).setWidth(70);
86
87 memento.saveColumnWidths(settings);
88
89 assertTrue(settings.contains("table.columnWidths"));
90 assertEquals("30,120,50,70", settings.getString("table.columnWidths"));
91 }
92
93 public void testRestoreColumnWidths() {
94 TransientSettings settings = new TransientSettings();
95 settings.setString("table.columnWidths", "30,120,50,70");
96
97 memento.restoreColumnWidths(settings);
98
99 assertEquals(30, table.getColumnModel().getColumn(0).getWidth());
100 assertEquals(120, table.getColumnModel().getColumn(1).getWidth());
101 assertEquals(50, table.getColumnModel().getColumn(2).getWidth());
102 assertEquals(70, table.getColumnModel().getColumn(3).getWidth());
103
104 assertEquals(30, table.getColumnModel().getColumn(0).getPreferredWidth());
105 assertEquals(120, table.getColumnModel().getColumn(1).getPreferredWidth());
106 assertEquals(50, table.getColumnModel().getColumn(2).getPreferredWidth());
107 assertEquals(70, table.getColumnModel().getColumn(3).getPreferredWidth());
108 }
109
110 public void testRestoreColumnWidthsWithIncorrectColumnCount() {
111 int width0 = table.getColumnModel().getColumn(0).getWidth();
112 int width1 = table.getColumnModel().getColumn(1).getWidth();
113 int width2 = table.getColumnModel().getColumn(2).getWidth();
114 int width3 = table.getColumnModel().getColumn(3).getWidth();
115
116 TransientSettings settings = new TransientSettings();
117 settings.setString("table.columnWidths", "30,120,50");
118
119 memento.restoreColumnWidths(settings);
120
121 assertEquals(width0, table.getColumnModel().getColumn(0).getWidth());
122 assertEquals(width1, table.getColumnModel().getColumn(1).getWidth());
123 assertEquals(width2, table.getColumnModel().getColumn(2).getWidth());
124 assertEquals(width3, table.getColumnModel().getColumn(3).getWidth());
125 }
126
127 public void testRestoreColumnWidthsWithIllegalSettingsString() {
128 int width0 = table.getColumnModel().getColumn(0).getWidth();
129 int width1 = table.getColumnModel().getColumn(1).getWidth();
130 int width2 = table.getColumnModel().getColumn(2).getWidth();
131 int width3 = table.getColumnModel().getColumn(3).getWidth();
132
133 TransientSettings settings = new TransientSettings();
134 settings.setString("table.columnWidths", "illegalPref");
135
136 memento.restoreColumnWidths(settings);
137
138 assertEquals(width0, table.getColumnModel().getColumn(0).getWidth());
139 assertEquals(width1, table.getColumnModel().getColumn(1).getWidth());
140 assertEquals(width2, table.getColumnModel().getColumn(2).getWidth());
141 assertEquals(width3, table.getColumnModel().getColumn(3).getWidth());
142 }
143
144 public void testSaveColumnOrder() {
145 TransientSettings settings = new TransientSettings();
146
147 table.getColumnModel().moveColumn(0, 2);
148 table.getColumnModel().moveColumn(3, 1);
149
150 memento.saveColumnOrder(settings);
151
152 assertTrue(settings.contains("table.columnOrder"));
153 assertEquals("1,3,2,0", settings.getString("table.columnOrder"));
154 }
155
156 public void testRestoreColumnOrderWithIncorrectColumnCount() {
157 TransientSettings settings = new TransientSettings();
158 settings.setString("table.columnOrder", "1,3,2");
159
160 memento.restoreColumnOrder(settings);
161
162 memento.saveColumnOrder(settings);
163 assertTrue(settings.contains("table.columnOrder"));
164 assertEquals("0,1,2,3", settings.getString("table.columnOrder"));
165 }
166
167
168
169
170
171 public void testRestoreColumnOrder() {
172 TransientSettings settings = new TransientSettings();
173 settings.setString("table.columnOrder", "0,3,1,2");
174
175 memento.restoreColumnOrder(settings);
176
177 memento.saveColumnOrder(settings);
178 assertTrue(settings.contains("table.columnOrder"));
179 assertEquals("0,3,1,2", settings.getString("table.columnOrder"));
180 }
181
182 public void testRestoreColumnOrderWithIllegalSettingsString() {
183 TransientSettings settings = new TransientSettings();
184 settings.setString("table.columnOrder", "illegalPref");
185
186 memento.restoreColumnOrder(settings);
187
188 memento.saveColumnOrder(settings);
189 assertTrue(settings.contains("table.columnOrder"));
190 assertEquals("0,1,2,3", settings.getString("table.columnOrder"));
191 }
192
193 protected void setUp() throws Exception {
194 table = new JTable(new Object[][] { { "cel(0,0)", "cell(0,1)", "cell(0,2)", "cell(0,3)" },
195 { "cell(1,0)", "cell(1,1)", "cell(1,2)", "cell(1,3)" },
196 { "cell(2,0)", "cell(2,1)", "cell(2,2)", "cell(2,3)" },
197 { "cell(3,0)", "cell(3,1)", "cell(3,2)", "cell(3,3)" },
198 { "cell(4,0)", "cell(4,1)", "cell(4,2)", "cell(4,3)" } },
199 new Object[] { "col0", "col1", "col2", "col3" });
200 assertEquals(-1, table.getSelectedRow());
201
202 memento = new TableMemento(table, "table");
203 }
204
205 public void testConstructor() {
206 try {
207 new TableMemento(null);
208 fail("Should throw IllegalArgumentException");
209 } catch (IllegalArgumentException e) {
210
211 }
212
213 try {
214 table.setName(null);
215 new TableMemento(table, "");
216 fail("Should throw IllegalArgumentException: table has no name");
217 } catch (Exception e) {
218
219 }
220
221 table.setName("table0");
222
223 TableMemento memento = new TableMemento(table);
224 assertEquals(table, memento.getTable());
225 assertEquals("table0", memento.getKey());
226
227 memento = new TableMemento(table, "key");
228 assertEquals(table, memento.getTable());
229 assertEquals("key", memento.getKey());
230 }
231 }