MapPaintUtils: Fix test, fix an NPE

Signed-off-by: Taylor Smock <taylor.smock@kaart.com>
pull/1/head
Taylor Smock 2020-08-18 09:56:58 -06:00
rodzic 251f968df8
commit 58be4eea0c
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 625F6A74A3E4311A
2 zmienionych plików z 49 dodań i 7 usunięć

Wyświetl plik

@ -148,10 +148,12 @@ public class MapPaintUtils {
* @param ds The dataset to add sources to
*/
public static synchronized void addSourcesToPaintStyle(DataSet ds) {
StyleSource styleSource = getMapWithAIPaintStyle();
if (styleSource == null) {
return;
}
List<String> sources = ds.allPrimitives().stream().map(MapPaintUtils::getSourceValue).filter(Objects::nonNull)
.distinct().collect(Collectors.toList());
StyleSource styleSource = getMapWithAIPaintStyle();
if (!styleSource.isLoaded()) {
styleSource.loadStyleSource();
}

Wyświetl plik

@ -3,6 +3,7 @@ package org.openstreetmap.josm.plugins.mapwithai.tools;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.awt.Color;
import java.io.IOException;
import java.util.List;
@ -10,17 +11,18 @@ import org.awaitility.Awaitility;
import org.awaitility.Durations;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.openstreetmap.josm.TestUtils;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
import org.openstreetmap.josm.gui.mappaint.StyleSetting;
import org.openstreetmap.josm.gui.mappaint.StyleSource;
import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
import org.openstreetmap.josm.io.CachedFile;
import org.openstreetmap.josm.plugins.mapwithai.testutils.MapWithAITestRules;
import org.openstreetmap.josm.testutils.JOSMTestRules;
public class MapPaintUtilsTest {
@RegisterExtension
JOSMTestRules rule = new MapWithAITestRules().wiremock();
MapWithAITestRules rule = (MapWithAITestRules) new MapWithAITestRules().wiremock().projection();
@Test
public void testAddPaintStyle() {
@ -37,12 +39,50 @@ public class MapPaintUtilsTest {
@Test
public void testStableSource() throws IOException {
MapCSSStyleSource mapcssSource = new MapCSSStyleSource(MapPaintUtils.getMapWithAIPaintStyle());
mapcssSource.loadStyleSource();
MapPaintUtils.removeMapWithAIPaintStyles();
MapPaintUtils.addMapWithAIPaintStyles();
MapCSSStyleSource mapcssSource = (MapCSSStyleSource) MapPaintUtils.getMapWithAIPaintStyle();
try (CachedFile file = new CachedFile(mapcssSource.url)) {
file.clear();
MapPaintUtils.addSourcesToPaintStyle(new DataSet());
MapPaintUtils.removeMapWithAIPaintStyles();
MapPaintUtils.addMapWithAIPaintStyles();
mapcssSource = (MapCSSStyleSource) MapPaintUtils.getMapWithAIPaintStyle();
DataSet ds = new DataSet();
MapPaintUtils.addSourcesToPaintStyle(ds);
for (int i = 0; i < 10; i++) {
ds.addPrimitive(TestUtils.newNode("source=digitalglobe"));
ds.addPrimitive(TestUtils.newNode("source=TestSource"));
MapPaintUtils.addSourcesToPaintStyle(ds);
assertEquals(1, countLabels(mapcssSource, "digitalglobe"));
assertEquals(1, countLabels(mapcssSource, "TestSource"));
}
Color color1digitalglobe = getColorStyleSetting(mapcssSource, "digitalglobe").getValue();
Color color1TestSource = getColorStyleSetting(mapcssSource, "TestSource").getValue();
file.clear();
MapPaintUtils.removeMapWithAIPaintStyles();
MapPaintUtils.addMapWithAIPaintStyles();
mapcssSource = (MapCSSStyleSource) MapPaintUtils.getMapWithAIPaintStyle();
MapPaintUtils.addSourcesToPaintStyle(ds);
assertEquals(color1digitalglobe, getColorStyleSetting(mapcssSource, "digitalglobe").getValue());
assertEquals(color1TestSource, getColorStyleSetting(mapcssSource, "TestSource").getValue());
}
}
private static long countLabels(MapCSSStyleSource source, String label) {
if (source == null || source.settings == null) {
return -1;
}
return source.settings.stream().filter(StyleSetting.PropertyStyleSetting.class::isInstance)
.map(StyleSetting.PropertyStyleSetting.class::cast)
.filter(l -> l.label != null && l.label.contains(label)).count();
}
private static StyleSetting.ColorStyleSetting getColorStyleSetting(MapCSSStyleSource source, String label) {
return source.settings.stream().filter(StyleSetting.ColorStyleSetting.class::isInstance)
.map(StyleSetting.ColorStyleSetting.class::cast).filter(l -> l.label != null && l.label.contains(label))
.findFirst().orElse(null);
}
}