Ticket #19449: fix-testGetPadded.patch

File fix-testGetPadded.patch, 10.8 KB (added by johsin18, 5 years ago)
  • src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java

    diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
    index b383ab729..33a1eebb1 100644
    a b public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi  
    228228        }
    229229        File arch = TaggingPresetReader.getZipIcons();
    230230        final Collection<String> s = Config.getPref().getList("taggingpreset.icon.sources", null);
    231         this.iconFuture = new ImageProvider(iconName)
     231        this.iconFuture = new CompletableFuture<>();
     232        new ImageProvider(iconName)
    232233            .setDirs(s)
    233234            .setId("presets")
    234235            .setArchive(arch)
    public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi  
    241242                        } catch (IllegalArgumentException e) {
    242243                            Logging.warn(toString() + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
    243244                            Logging.warn(e);
     245                        } finally {
     246                            iconFuture.complete(null);
    244247                        }
    245248                    });
    246249                } else {
  • test/unit/org/openstreetmap/josm/TestUtils.java

    diff --git a/test/unit/org/openstreetmap/josm/TestUtils.java b/test/unit/org/openstreetmap/josm/TestUtils.java
    index 464ab7d32..3729284ad 100644
    a b import java.util.Objects;  
    2929import java.util.Set;
    3030import java.util.concurrent.ExecutionException;
    3131import java.util.concurrent.ThreadPoolExecutor;
     32import java.util.concurrent.TimeUnit;
     33import java.util.concurrent.TimeoutException;
    3234import java.util.function.Function;
    3335import java.util.stream.Collectors;
    3436import java.util.stream.Stream;
    import org.openstreetmap.josm.gui.progress.AbstractProgressMonitor;  
    4749import org.openstreetmap.josm.gui.progress.CancelHandler;
    4850import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    4951import org.openstreetmap.josm.gui.progress.ProgressTaskId;
     52import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
    5053import org.openstreetmap.josm.gui.util.GuiHelper;
    5154import org.openstreetmap.josm.io.Compression;
    5255import org.openstreetmap.josm.testutils.FakeGraphics;
    5356import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
    5457import org.openstreetmap.josm.testutils.mockers.WindowMocker;
    5558import org.openstreetmap.josm.tools.JosmRuntimeException;
     59import org.openstreetmap.josm.tools.Logging;
    5660import org.openstreetmap.josm.tools.ReflectionUtils;
    5761import org.openstreetmap.josm.tools.Utils;
    5862import org.openstreetmap.josm.tools.WikiReader;
    public final class TestUtils {  
    602606                .map(s -> s.substring(s.indexOf("{{{") + 3, s.indexOf("}}}")))
    603607                .collect(Collectors.toList());
    604608    }
     609
     610    public static void waitForIconLoading(Collection<TaggingPreset> presets) {
     611        // wait for asynchronous icon loading
     612        presets.parallelStream().map(TaggingPreset::getIconLoadingTask).filter(Objects::nonNull).forEach(t -> {
     613            try {
     614                t.get(30, TimeUnit.SECONDS);
     615            } catch (InterruptedException | ExecutionException | TimeoutException e) {
     616                Logging.error(e);
     617            }
     618        });
     619    }
    605620}
  • test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java

    diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
    index c2263a558..a391d0d4f 100644
    a b import java.util.Collection;  
    1212import java.util.HashSet;
    1313import java.util.List;
    1414import java.util.Locale;
    15 import java.util.Objects;
    1615import java.util.Set;
    17 import java.util.concurrent.ExecutionException;
    18 import java.util.concurrent.TimeUnit;
    19 import java.util.concurrent.TimeoutException;
    2016
    2117import org.junit.BeforeClass;
    2218import org.junit.ClassRule;
    public class TaggingPresetPreferenceTestIT extends AbstractExtendedSourceEntryTe  
    115111    private void testPresets(Set<String> messages, ExtendedSourceEntry source) throws SAXException, IOException {
    116112        Collection<TaggingPreset> presets = TaggingPresetReader.readAll(source.url, true);
    117113        assertFalse(presets.isEmpty());
    118         // wait for asynchronous icon loading
    119         presets.parallelStream().map(TaggingPreset::getIconLoadingTask).filter(Objects::nonNull).forEach(t -> {
    120             try {
    121                 t.get(30, TimeUnit.SECONDS);
    122             } catch (InterruptedException | ExecutionException | TimeoutException e) {
    123                 Logging.error(e);
    124             }
    125         });
     114        TestUtils.waitForIconLoading(presets);
    126115        // check that links are correct and not redirections
    127116        presets.parallelStream().flatMap(x -> x.data.stream().filter(i -> i instanceof Link).map(i -> ((Link) i).getUrl())).forEach(u -> {
    128117            try {
  • new file test/unit/org/openstreetmap/josm/tools/ImageProviderGetPaddedTest.java

    diff --git a/test/unit/org/openstreetmap/josm/tools/ImageProviderGetPaddedTest.java b/test/unit/org/openstreetmap/josm/tools/ImageProviderGetPaddedTest.java
    new file mode 100644
    index 000000000..c3bdc5ccb
    - +  
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.tools;
     3
     4import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
     5import org.junit.BeforeClass;
     6import org.junit.Rule;
     7import org.junit.Test;
     8import org.openstreetmap.josm.JOSMFixture;
     9import org.openstreetmap.josm.TestUtils;
     10import org.openstreetmap.josm.data.osm.Node;
     11import org.openstreetmap.josm.data.osm.OsmUtils;
     12import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
     13import org.openstreetmap.josm.testutils.JOSMTestRules;
     14import org.openstreetmap.josm.tools.ImageProvider.GetPaddedOptions;
     15
     16import java.awt.Dimension;
     17import java.util.EnumSet;
     18
     19import static org.junit.Assert.assertNotNull;
     20import static org.junit.Assert.assertNull;
     21
     22/**
     23 * Unit tests of getPadded method of the {@link ImageProvider} class.
     24 * This unit test is separated because it is the only one that needs a slow initialization.
     25 */
     26public class ImageProviderGetPaddedTest {
     27
     28    /**
     29     * Setup test.
     30     */
     31    @Rule
     32    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
     33    public JOSMTestRules test = new JOSMTestRules().mapStyles().presets();
     34
     35    /**
     36     * Setup test.
     37     */
     38    @BeforeClass
     39    public static void setUp() {
     40        JOSMFixture.createUnitTestFixture().init();
     41    }
     42
     43    /**
     44     * Unit test of {@link ImageProvider#getPadded}.
     45     */
     46    @Test
     47    public void testGetPadded() {
     48        TestUtils.waitForIconLoading(TaggingPresets.getTaggingPresets());
     49
     50        final EnumSet<GetPaddedOptions> noDefault = EnumSet.of(GetPaddedOptions.NO_DEFAULT);
     51        final Dimension iconSize = new Dimension(16, 16);
     52
     53        assertNull(ImageProvider.getPadded(new Node(), new Dimension(0, 0)));
     54        assertNotNull(ImageProvider.getPadded(new Node(), iconSize));
     55        assertNull(ImageProvider.getPadded(new Node(), iconSize, noDefault));
     56        assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("node amenity=restaurant"), iconSize, noDefault));
     57        assertNull(ImageProvider.getPadded(OsmUtils.createPrimitive("node barrier=hedge"), iconSize,
     58                EnumSet.of(GetPaddedOptions.NO_DEFAULT, GetPaddedOptions.NO_DEPRECATED)));
     59        assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("way waterway=stream"), iconSize, noDefault));
     60        assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("relation type=route route=railway"), iconSize, noDefault));
     61    }
     62}
  • test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java

    diff --git a/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java b/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
    index bdf0ae0e8..84dfe2e2d 100644
    a b import static java.awt.image.BufferedImage.TYPE_INT_ARGB;  
    55import static org.junit.Assert.assertEquals;
    66import static org.junit.Assert.assertFalse;
    77import static org.junit.Assert.assertNotNull;
    8 import static org.junit.Assert.assertNull;
    98import static org.junit.Assert.assertTrue;
    109
    1110import java.awt.Color;
    import java.awt.event.MouseListener;  
    2221import java.awt.image.BufferedImage;
    2322import java.io.File;
    2423import java.io.IOException;
    25 import java.util.EnumSet;
    2624import java.util.List;
    2725import java.util.logging.Handler;
    2826import java.util.logging.LogRecord;
    import org.junit.Rule;  
    3937import org.junit.Test;
    4038import org.openstreetmap.josm.JOSMFixture;
    4139import org.openstreetmap.josm.TestUtils;
    42 import org.openstreetmap.josm.data.osm.Node;
    43 import org.openstreetmap.josm.data.osm.OsmUtils;
    4440import org.openstreetmap.josm.testutils.JOSMTestRules;
    45 import org.openstreetmap.josm.tools.ImageProvider.GetPaddedOptions;
    4641
    4742import com.kitfox.svg.SVGConst;
    4843
    public class ImageProviderTest {  
    5853     */
    5954    @Rule
    6055    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
    61     public JOSMTestRules test = new JOSMTestRules().mapStyles().presets();
     56    public JOSMTestRules test = new JOSMTestRules();
    6257
    6358    private static final class LogHandler14319 extends Handler {
    6459        boolean failed;
    public class ImageProviderTest {  
    152147                "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="));
    153148    }
    154149
    155     /**
    156      * Unit test of {@link ImageProvider#getPadded}.
    157      */
    158     @Test
    159     public void testGetPadded() {
    160         final EnumSet<GetPaddedOptions> noDefault = EnumSet.of(GetPaddedOptions.NO_DEFAULT);
    161         final Dimension iconSize = new Dimension(16, 16);
    162 
    163         assertNull(ImageProvider.getPadded(new Node(), new Dimension(0, 0)));
    164         assertNotNull(ImageProvider.getPadded(new Node(), iconSize));
    165         assertNull(ImageProvider.getPadded(new Node(), iconSize, noDefault));
    166         assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("node amenity=restaurant"), iconSize, noDefault));
    167         assertNull(ImageProvider.getPadded(OsmUtils.createPrimitive("node barrier=hedge"), iconSize,
    168                 EnumSet.of(GetPaddedOptions.NO_DEFAULT, GetPaddedOptions.NO_DEPRECATED)));
    169         assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("way waterway=stream"), iconSize, noDefault));
    170         assertNotNull(ImageProvider.getPadded(OsmUtils.createPrimitive("relation type=route route=railway"), iconSize, noDefault));
    171     }
    172 
    173150    /**
    174151     * Test getting a bounded icon given some UI scaling configured.
    175152     */