Ticket #18798: 18798.1.patch

File 18798.1.patch, 4.6 KB (added by taylor.smock, 5 weeks ago)

Add non-regression test (uses reflection)

  • src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java

     
    7070import org.openstreetmap.josm.command.Command;
    7171import org.openstreetmap.josm.command.SequenceCommand;
    7272import org.openstreetmap.josm.data.UndoRedoHandler;
     73import org.openstreetmap.josm.data.coor.LatLon;
    7374import org.openstreetmap.josm.data.osm.DataSet;
     75import org.openstreetmap.josm.data.osm.INode;
    7476import org.openstreetmap.josm.data.osm.OsmDataManager;
    7577import org.openstreetmap.josm.data.osm.OsmPrimitive;
    7678import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     
    692694            final Iterator<OsmPrimitive> osmPrimitiveIterator = sel.iterator();
    693695            final OsmPrimitive virtual = (osmPrimitiveIterator.hasNext() ? osmPrimitiveIterator.next().getType() : OsmPrimitiveType.NODE)
    694696                    .newInstance(0, false);
     697            if (virtual instanceof INode)
     698                ((INode) virtual).setCoor(LatLon.ZERO);
    695699            virtual.put(key, value);
    696700            final ImageIcon padded = ImageProvider.getPadded(virtual, ImageProvider.ImageSizes.LARGEICON.getImageDimension(),
    697701                    EnumSet.of(ImageProvider.GetPaddedOptions.NO_DEFAULT, ImageProvider.GetPaddedOptions.NO_DEPRECATED));
  • test/unit/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelperTest.java

     
    3636import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
    3737import org.openstreetmap.josm.testutils.JOSMTestRules;
    3838import org.openstreetmap.josm.testutils.mockers.WindowMocker;
     39import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
    3940
    4041import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
    4142
     
    4950     */
    5051    @Rule
    5152    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
    52     public JOSMTestRules test = new JOSMTestRules();
     53    public JOSMTestRules test = new JOSMTestRules().territories().projection();
    5354
    5455    private static TagEditHelper newTagEditHelper() {
    5556        DefaultTableModel propertyData = new DefaultTableModel();
     
    123124        Object val = findIcon.invoke(addTagsDialog, "highway", "");
    124125        assertNotNull(val);
    125126    }
     127
     128    /**
     129     * Non-regression test for <a
     130     * href="https://josm.openstreetmap.de/ticket/18798>#18798</a>
     131     *
     132     * @throws InvocationTargetException Check logs -- if caused by NPE, a
     133     *                                   regression probably occurred.
     134     * @throws IllegalArgumentException  Check source code
     135     * @throws IllegalAccessException    Check source code
     136     * @throws NoSuchFieldException      Check source code
     137     * @throws SecurityException         Probably shouldn't happen for tests
     138     * @throws NoSuchMethodException     Check source code
     139     */
     140    @Test
     141    public void testTicket18798() throws NoSuchMethodException, SecurityException, IllegalAccessException,
     142            IllegalArgumentException, InvocationTargetException, NoSuchFieldException {
     143        TestUtils.assumeWorkingJMockit();
     144        if (GraphicsEnvironment.isHeadless()) {
     145            new WindowMocker();
     146        }
     147        RightAndLefthandTraffic.initialize();
     148        MapCSSStyleSource css = new MapCSSStyleSource(
     149                "node:righthandtraffic[junction=roundabout] { text: tr(\"Roundabout node\"); }");
     150        css.loadStyleSource();
     151        MapPaintStyles.addStyle(css);
     152        Node node = new Node(LatLon.NORTH_POLE);
     153        DataSet ds = new DataSet(node);
     154        OsmDataManager.getInstance().setActiveDataSet(ds);
     155        MainApplication.getLayerManager().addLayer(new OsmDataLayer(ds, "Test Layer", null));
     156        TagEditHelper helper = newTagEditHelper();
     157        Field sel = TagEditHelper.class.getDeclaredField("sel");
     158        sel.set(helper, Collections.singletonList(node));
     159        AddTagsDialog addTagsDialog = helper.getAddTagsDialog();
     160        Method findIcon = TagEditHelper.AbstractTagsDialog.class.getDeclaredMethod("findIcon", String.class,
     161                String.class);
     162        findIcon.setAccessible(true);
     163        Object val = findIcon.invoke(addTagsDialog, "junction", "roundabout");
     164        assertNotNull(val);
     165    }
    126166}