Ticket #21203: 21203.4.patch

File 21203.4.patch, 3.0 KB (added by marcello@…, 4 years ago)
  • src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java

     
    55
    66import javax.swing.text.JTextComponent;
    77
    8 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    98import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
    109import org.openstreetmap.josm.spi.preferences.Config;
    1110
     
    5554     * @see ComboBoxHistory#addElement(java.lang.String)
    5655     */
    5756    public void addCurrentItemToHistory() {
    58         Object item = getEditor().getItem();
    59         if (item instanceof String) {
    60             model.addElement((String) item);
    61         } else if (item instanceof AutoCompletionItem) {
    62             model.addElement((AutoCompletionItem) item);
    63         } else {
    64             throw new IllegalArgumentException(item.getClass().getSimpleName() + " is not supported in addCurrentItemToHistory");
    65         }
     57        model.addElement(getEditor().getItem().toString());
    6658    }
    6759
    6860    /**
  • test/unit/org/openstreetmap/josm/gui/widgets/HistoryComboBoxTest.java

     
    33
    44import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
    55import static org.junit.jupiter.api.Assertions.assertEquals;
    6 import static org.junit.jupiter.api.Assertions.assertThrows;
    76
    87import java.util.stream.Stream;
    98
     
    2120@FullPreferences
    2221class HistoryComboBoxTest {
    2322    static Stream<Arguments> testNonRegression21203() {
    24         return Stream.of(Arguments.of("Hello world"), Arguments.of(new AutoCompletionItem("Hello world2")));
     23        return Stream.of(Arguments.of("Hello world"), Arguments.of(new AutoCompletionItem("Hello world2")), Arguments.of(new Double(42)));
    2524    }
    2625
    2726    /**
     
    3837        assertDoesNotThrow(historyComboBox::addCurrentItemToHistory);
    3938    }
    4039
    41     /**
    42      * This ensures that we do throw on unknown objects for #21203
    43      */
    4440    @Test
    45     void testNonRegression21203Throws() {
     41    void testEmptyEditor() {
    4642        final HistoryComboBox historyComboBox = new HistoryComboBox();
    47         // Sanity check
    48         assertEquals(0, historyComboBox.getModel().getSize());
    49         historyComboBox.getEditor().setItem(new Object());
    50         IllegalArgumentException illegalArgumentException = assertThrows(IllegalArgumentException.class,
    51                 historyComboBox::addCurrentItemToHistory);
    52         assertEquals("Object is not supported in addCurrentItemToHistory", illegalArgumentException.getMessage());
     43        assertDoesNotThrow(historyComboBox::addCurrentItemToHistory);
     44        historyComboBox.getEditor().setItem(null);
     45        assertDoesNotThrow(historyComboBox::addCurrentItemToHistory);
    5346    }
    5447}