From 35f1166357883c07ac708bf4bb6ac8d985c2a278 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Sun, 22 Sep 2019 06:14:13 -0600 Subject: [PATCH] Fix an issue with duplicate RapiD URL's being added Signed-off-by: Taylor Smock --- .../plugins/rapid/backend/RapiDDataUtils.java | 6 ++++-- .../plugins/rapid/RapiDDataUtilsTest.java | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDDataUtils.java b/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDDataUtils.java index fa6a710..b9683e0 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDDataUtils.java +++ b/src/main/java/org/openstreetmap/josm/plugins/rapid/backend/RapiDDataUtils.java @@ -149,9 +149,11 @@ public final class RapiDDataUtils { ExtendedSourceEntry rapid = new ExtendedSourceEntry(SourceType.MAP_PAINT_STYLE, "rapid.mapcss", "https://gitlab.com/smocktaylor/rapid/raw/master/src/resources/styles/standard/rapid.mapcss"); List paintStyles = MapPaintPrefHelper.INSTANCE.get(); - if (!paintStyles.contains(rapid)) { - paintStyles.add(rapid); + for (SourceEntry paintStyle : paintStyles) { + if (rapid.url.equals(paintStyle.url)) + return; } + paintStyles.add(rapid); MapPaintPrefHelper.INSTANCE.put(paintStyles); } } diff --git a/test/unit/org/openstreetmap/josm/plugins/rapid/RapiDDataUtilsTest.java b/test/unit/org/openstreetmap/josm/plugins/rapid/RapiDDataUtilsTest.java index 868a9b0..1136539 100644 --- a/test/unit/org/openstreetmap/josm/plugins/rapid/RapiDDataUtilsTest.java +++ b/test/unit/org/openstreetmap/josm/plugins/rapid/RapiDDataUtilsTest.java @@ -3,6 +3,7 @@ package org.openstreetmap.josm.plugins.rapid; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.TreeSet; import org.junit.Assert; @@ -15,12 +16,14 @@ import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Way; +import org.openstreetmap.josm.data.preferences.sources.MapPaintPrefHelper; +import org.openstreetmap.josm.data.preferences.sources.SourceEntry; import org.openstreetmap.josm.plugins.rapid.backend.RapiDDataUtils; import org.openstreetmap.josm.testutils.JOSMTestRules; public class RapiDDataUtilsTest { @Rule - public JOSMTestRules test = new JOSMTestRules(); + public JOSMTestRules test = new JOSMTestRules().preferences(); /** * This gets data from RapiD. This test may fail if someone adds the data to OSM. @@ -77,4 +80,18 @@ public class RapiDDataUtilsTest { RapiDDataUtils.removePrimitivesFromDataSet(Collections.singleton(way1)); Assert.assertEquals(0, ds1.allPrimitives().size()); } + + @Test + public void testAddPaintStyle() { + List paintStyles = MapPaintPrefHelper.INSTANCE.get(); + // There are two default paint styles + Assert.assertEquals(2, paintStyles.size()); + RapiDDataUtils.addRapiDPaintStyles(); + paintStyles = MapPaintPrefHelper.INSTANCE.get(); + Assert.assertEquals(3, paintStyles.size()); + RapiDDataUtils.addRapiDPaintStyles(); + paintStyles = MapPaintPrefHelper.INSTANCE.get(); + Assert.assertEquals(3, paintStyles.size()); + RapiDDataUtils.addRapiDPaintStyles(); + } }