source: josm/trunk/test/unit/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTableTest.java@ 14052

Last change on this file since 14052 was 14052, checked in by Don-vip, 6 years ago

see #16010 - use JMockit to enable more extensive test coverage (patch by ris, modified)

see https://github.com/openstreetmap/josm/pull/24/commits for details

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.preferences.advanced;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertNull;
7import static org.junit.Assert.assertTrue;
8
9import java.util.Arrays;
10
11import javax.swing.JOptionPane;
12
13import org.junit.Rule;
14import org.junit.Test;
15import org.openstreetmap.josm.gui.ExtendedDialog;
16import org.openstreetmap.josm.gui.preferences.advanced.PreferencesTable.AllSettingsTableModel;
17import org.openstreetmap.josm.spi.preferences.StringSetting;
18import org.openstreetmap.josm.testutils.JOSMTestRules;
19import org.openstreetmap.josm.testutils.mockers.ExtendedDialogMocker;
20import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
21
22import com.google.common.collect.ImmutableMap;
23
24import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
25
26/**
27 * Unit tests of {@link PreferencesTable} class.
28 */
29public class PreferencesTableTest {
30 /**
31 * Setup tests
32 */
33 @Rule
34 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
35 public JOSMTestRules test = new JOSMTestRules().preferences().assertionsInEDT();
36
37 private static PrefEntry newPrefEntry(String value) {
38 StringSetting val = new StringSetting(value);
39 StringSetting def = new StringSetting("defaultValue");
40 return new PrefEntry("key", val, def, false);
41 }
42
43 private static PreferencesTable newTable() {
44 return new PreferencesTable(Arrays.asList(newPrefEntry("value")));
45 }
46
47 /**
48 * Unit test of {@link PreferencesTable#PreferencesTable}.
49 */
50 @Test
51 public void testPreferencesTable() {
52 new JOptionPaneSimpleMocker(ImmutableMap.of(
53 "Please select the row to edit.", JOptionPane.OK_OPTION,
54 "Please select the row to delete.", JOptionPane.OK_OPTION
55 ));
56 new ExtendedDialogMocker() {
57 @Override
58 protected int getMockResult(final ExtendedDialog instance) {
59 if (instance.getTitle().equals("Add setting")) {
60 return 1 + this.getButtonPositionFromLabel(instance, "Cancel");
61 } else {
62 return super.getMockResult(instance);
63 }
64 }
65 };
66 PreferencesTable t = newTable();
67 t.fireDataChanged();
68 assertTrue(t.getSelectedItems().isEmpty());
69 assertFalse(t.editPreference(null));
70 assertNull(t.addPreference(null));
71 t.resetPreferences(null);
72 }
73
74 /**
75 * Unit test of {@link PreferencesTable.AllSettingsTableModel} class.
76 */
77 @Test
78 public void testAllSettingsTableModel() {
79 AllSettingsTableModel model = (AllSettingsTableModel) newTable().getModel();
80 assertEquals(1, model.getRowCount());
81 assertFalse(model.isCellEditable(0, 0));
82 assertTrue(model.isCellEditable(0, 1));
83 assertEquals("key", model.getValueAt(0, 0));
84 assertEquals(newPrefEntry("value"), model.getValueAt(0, 1));
85 String foobar = "foobar";
86 model.setValueAt(foobar, 0, 1);
87 assertEquals(newPrefEntry(foobar), model.getValueAt(0, 1));
88 }
89}
Note: See TracBrowser for help on using the repository browser.