Index: trunk/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java	(revision 15136)
+++ trunk/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java	(revision 15141)
@@ -3,4 +3,6 @@
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.nio.file.Files;
@@ -10,4 +12,5 @@
 import java.util.TreeMap;
 
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
@@ -15,4 +18,5 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
@@ -21,4 +25,7 @@
 import org.openstreetmap.josm.data.osm.search.SearchParseError;
 import org.openstreetmap.josm.data.osm.search.SearchSetting;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -38,5 +45,5 @@
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().projection();
+    public JOSMTestRules test = new JOSMTestRules().projection().main().preferences();
 
     private static Map<String, String> getRefToRoleMap(Relation relation) {
@@ -107,3 +114,47 @@
         assertEquals("{1=outer, 1.1=inner, 1.1.1=outer, 1.1.2=outer, 1.2=inner}", getRefToRoleMap(mp2).toString());
     }
+
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/17767">Bug #17767</a>.
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testTicket17767() throws Exception {
+        DataSet ds = OsmReader.parseDataSet(TestUtils.getRegressionDataStream(17767, "upd-mp.osm"), null);
+        Layer layer = new OsmDataLayer(ds, null, null);
+        MainApplication.getLayerManager().addLayer(layer);
+        try {
+            CreateMultipolygonAction updateAction = new CreateMultipolygonAction(true);
+            CreateMultipolygonAction createAction = new CreateMultipolygonAction(false);
+            assertFalse(updateAction.isEnabled());
+            assertFalse(createAction.isEnabled());
+            ds.setSelected(ds.getPrimitiveById(189944949L, OsmPrimitiveType.WAY));
+            assertFalse(updateAction.isEnabled());
+            assertTrue(createAction.isEnabled());
+        } finally {
+            MainApplication.getLayerManager().removeLayer(layer);
+        }
+    }
+
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/17768">Bug #17768</a>.
+     * @throws Exception if an error occurs
+     */
+    @Test
+    @Ignore
+    public void testTicket17768() throws Exception {
+        DataSet ds = OsmReader.parseDataSet(TestUtils.getRegressionDataStream(17768, "dupmem.osm"), null);
+        Layer layer = new OsmDataLayer(ds, null, null);
+        MainApplication.getLayerManager().addLayer(layer);
+        try {
+            Relation old = (Relation) ds.getPrimitiveById(580092, OsmPrimitiveType.RELATION);
+            assertEquals(3, old.getMembersCount());
+            Relation mp = createMultipolygon(ds.getWays(), "type:way", old, true);
+            assertEquals(mp.getPrimitiveId(), old.getPrimitiveId());
+            assertEquals(2, mp.getMembersCount());
+        } finally {
+            MainApplication.getLayerManager().removeLayer(layer);
+        }
+
+    }
 }
