diff --git a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
index 77954c6d1..3513fb7d1 100644
a
|
b
|
public abstract class AbstractPrimitive implements IPrimitive, IFilterablePrimit
|
645 | 645 | newKeys[index++] = tag.getKey(); |
646 | 646 | newKeys[index++] = tag.getValue(); |
647 | 647 | } |
648 | | keys = newKeys; |
649 | 648 | } |
| 649 | keys = newKeys; |
650 | 650 | keysChangedImpl(originalKeys); |
651 | 651 | } |
652 | 652 | |
diff --git a/test/unit/org/openstreetmap/josm/data/osm/AbstractPrimitiveTest.java b/test/unit/org/openstreetmap/josm/data/osm/AbstractPrimitiveTest.java
index 2f8275851..fa1ea5115 100644
a
|
b
|
|
1 | 1 | // License: GPL. For details, see LICENSE file. |
2 | 2 | package org.openstreetmap.josm.data.osm; |
3 | 3 | |
| 4 | import static org.junit.jupiter.api.Assertions.assertEquals; |
4 | 5 | import static org.junit.jupiter.api.Assertions.assertFalse; |
| 6 | import static org.junit.jupiter.api.Assertions.assertNull; |
5 | 7 | import static org.junit.jupiter.api.Assertions.assertTrue; |
6 | 8 | |
7 | 9 | import java.util.Collections; |
| 10 | import java.util.HashMap; |
| 11 | import java.util.Map; |
8 | 12 | |
9 | 13 | import org.junit.jupiter.api.Test; |
10 | 14 | |
… |
… |
class AbstractPrimitiveTest {
|
65 | 69 | assertTrue(p.hasTagDifferent("foo", "bar", "baz")); |
66 | 70 | assertTrue(p.hasTagDifferent("foo", Collections.singleton("bar"))); |
67 | 71 | } |
| 72 | |
| 73 | /** |
| 74 | * Unit test of {@link AbstractPrimitive#putAll} |
| 75 | */ |
| 76 | @Test |
| 77 | void testPutAll() { |
| 78 | AbstractPrimitive p = new Node(); |
| 79 | Map<String, String> tags = new HashMap<>(); |
| 80 | |
| 81 | // insert tags |
| 82 | tags.put("a", "va1"); |
| 83 | tags.put("b", "vb1"); |
| 84 | p.putAll(tags); |
| 85 | assertEquals("va1", p.get("a")); |
| 86 | assertEquals("vb1", p.get("b")); |
| 87 | |
| 88 | // change tags |
| 89 | tags.clear(); |
| 90 | tags.put("a", "va2"); |
| 91 | p.putAll(tags); |
| 92 | assertEquals("va2", p.get("a")); |
| 93 | assertEquals("vb1", p.get("b")); |
| 94 | |
| 95 | // change and insert tags |
| 96 | tags.clear(); |
| 97 | tags.put("b", "vb3"); |
| 98 | tags.put("c", "vc3"); |
| 99 | p.putAll(tags); |
| 100 | assertEquals("va2", p.get("a")); |
| 101 | assertEquals("vb3", p.get("b")); |
| 102 | assertEquals("vc3", p.get("c")); |
| 103 | |
| 104 | // change and remove tags |
| 105 | tags.clear(); |
| 106 | tags.put("a", "va4"); |
| 107 | tags.put("b", null); |
| 108 | tags.put(null, null); |
| 109 | p.putAll(tags); |
| 110 | assertEquals("va4", p.get("a")); |
| 111 | assertNull(p.get("b")); |
| 112 | assertEquals("vc3", p.get("c")); |
| 113 | } |
68 | 114 | } |