1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.gui.dialogs;
|
---|
3 |
|
---|
4 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
---|
5 | import static org.junit.jupiter.api.Assertions.assertFalse;
|
---|
6 |
|
---|
7 | import java.lang.reflect.Field;
|
---|
8 | import java.util.List;
|
---|
9 | import java.util.stream.Collectors;
|
---|
10 | import java.util.stream.Stream;
|
---|
11 |
|
---|
12 | import javax.swing.AbstractAction;
|
---|
13 |
|
---|
14 | import org.junit.jupiter.params.ParameterizedTest;
|
---|
15 | import org.junit.jupiter.params.provider.ValueSource;
|
---|
16 | import org.openstreetmap.josm.data.osm.Filter;
|
---|
17 | import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
|
---|
18 | import org.openstreetmap.josm.testutils.annotations.Main;
|
---|
19 | import org.openstreetmap.josm.tools.ReflectionUtils;
|
---|
20 |
|
---|
21 | /**
|
---|
22 | * Test class for {@link FilterDialog}
|
---|
23 | */
|
---|
24 | @BasicPreferences(true)
|
---|
25 | @Main
|
---|
26 | class FilterDialogTest {
|
---|
27 | private static final List<Filter> FILTERS = Stream.of("type:node", "type:way", "type:relation")
|
---|
28 | .map(Filter::readFromString).map(Filter::new).collect(Collectors.toList());
|
---|
29 |
|
---|
30 | @ParameterizedTest
|
---|
31 | @ValueSource(ints = {0, 1, 2})
|
---|
32 | void testNonRegression22439(int indexToRemove) throws ReflectiveOperationException {
|
---|
33 | FilterDialog filterDialog = new FilterDialog();
|
---|
34 | FilterTableModel filterModel = filterDialog.getFilterModel();
|
---|
35 | filterModel.addFilters(FILTERS.toArray(new Filter[0]));
|
---|
36 | Filter toRemove = filterModel.getValue(indexToRemove);
|
---|
37 |
|
---|
38 | assertEquals(FILTERS.get(indexToRemove), toRemove, "The indexes don't match between lists");
|
---|
39 |
|
---|
40 | filterModel.getSelectionModel().setSelectionInterval(indexToRemove, indexToRemove);
|
---|
41 | Field deleteField = FilterDialog.class.getDeclaredField("deleteAction");
|
---|
42 | ReflectionUtils.setObjectsAccessible(deleteField);
|
---|
43 | AbstractAction deleteAction = (AbstractAction) deleteField.get(filterDialog);
|
---|
44 | deleteAction.actionPerformed(null);
|
---|
45 |
|
---|
46 | assertEquals(2, filterModel.getFilters().size());
|
---|
47 | assertFalse(filterModel.getFilters().contains(toRemove));
|
---|
48 | }
|
---|
49 | }
|
---|