Index: trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 11978)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
@@ -10,4 +11,5 @@
 import java.io.InputStream;
 import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -29,4 +31,6 @@
 import org.openstreetmap.josm.io.Compression;
 import org.openstreetmap.josm.testutils.FakeGraphics;
+import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Utils;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -286,3 +290,20 @@
         };
     }
+
+    /**
+     * Ensures 100% code coverage for enums.
+     * @param enumClass enum class to cover
+     */
+    public static void superficialEnumCodeCoverage(Class<? extends Enum<?>> enumClass) {
+        try {
+            Method values = enumClass.getMethod("values");
+            Method valueOf = enumClass.getMethod("valueOf", String.class);
+            Utils.setObjectsAccessible(values, valueOf);
+            for (Object o : (Object[]) values.invoke(null)) {
+                assertEquals(o, valueOf.invoke(null, ((Enum<?>) o).name()));
+            }
+        } catch (IllegalArgumentException | ReflectiveOperationException | SecurityException e) {
+            throw new JosmRuntimeException(e);
+        }
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java	(revision 11978)
@@ -5,4 +5,6 @@
 
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.ExtensionFileFilter.AddArchiveExtension;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
@@ -47,3 +49,11 @@
             .verify();
     }
+
+    /**
+     * Unit test of {@link AddArchiveExtension} enum.
+     */
+    @Test
+    public void testEnumAddArchiveExtension() {
+        TestUtils.superficialEnumCodeCoverage(AddArchiveExtension.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/MoveActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/MoveActionTest.java	(revision 11978)
+++ trunk/test/unit/org/openstreetmap/josm/actions/MoveActionTest.java	(revision 11978)
@@ -0,0 +1,20 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.MoveAction.Direction;
+
+/**
+ * Unit tests for class {@link ExtensionFileFilter}.
+ */
+public class MoveActionTest {
+
+    /**
+     * Unit test of {@link Direction} enum.
+     */
+    @Test
+    public void testEnumDirection() {
+        TestUtils.superficialEnumCodeCoverage(Direction.class);
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java	(revision 11978)
@@ -11,4 +11,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.OrthogonalizeAction.Direction;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.coor.LatLon;
@@ -16,5 +17,4 @@
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -26,5 +26,5 @@
 
 /**
- * Unit tests for class {@link OsmDataLayer}.
+ * Unit tests for class {@link OrthogonalizeAction}.
  */
 public class OrthogonalizeActionTest {
@@ -111,3 +111,11 @@
         }
     }
+
+    /**
+     * Unit test of {@link Direction} enum.
+     */
+    @Test
+    public void testEnumDirection() {
+        TestUtils.superficialEnumCodeCoverage(Direction.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DeleteActionTest.java	(revision 11978)
@@ -8,4 +8,6 @@
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.mapmode.DeleteAction.DeleteMode;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -43,3 +45,11 @@
         }
     }
+
+    /**
+     * Unit test of {@link DeleteMode} enum.
+     */
+    @Test
+    public void testEnumDeleteMode() {
+        TestUtils.superficialEnumCodeCoverage(DeleteMode.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ExtrudeActionTest.java	(revision 11978)
@@ -8,4 +8,6 @@
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.mapmode.ExtrudeAction.Mode;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -43,3 +45,11 @@
         }
     }
+
+    /**
+     * Unit test of {@link Mode} enum.
+     */
+    @Test
+    public void testEnumMode() {
+        TestUtils.superficialEnumCodeCoverage(Mode.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyActionTest.java	(revision 11978)
@@ -8,4 +8,6 @@
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.mapmode.ImproveWayAccuracyAction.State;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -43,3 +45,11 @@
         }
     }
+
+    /**
+     * Unit test of {@link State} enum.
+     */
+    @Test
+    public void testEnumState() {
+        TestUtils.superficialEnumCodeCoverage(State.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(revision 11978)
@@ -8,4 +8,7 @@
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.mapmode.ParallelWayAction.Mode;
+import org.openstreetmap.josm.actions.mapmode.ParallelWayAction.Modifier;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -43,3 +46,19 @@
         }
     }
+
+    /**
+     * Unit test of {@link Mode} enum.
+     */
+    @Test
+    public void testEnumMode() {
+        TestUtils.superficialEnumCodeCoverage(Mode.class);
+    }
+
+    /**
+     * Unit test of {@link Modifier} enum.
+     */
+    @Test
+    public void testEnumModifier() {
+        TestUtils.superficialEnumCodeCoverage(Modifier.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java	(revision 11978)
@@ -15,4 +15,7 @@
 import org.junit.Test;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.mapmode.SelectAction.Mode;
+import org.openstreetmap.josm.actions.mapmode.SelectAction.SelectActionCursor;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -142,3 +145,19 @@
         }
     }
+
+    /**
+     * Unit test of {@link Mode} enum.
+     */
+    @Test
+    public void testEnumMode() {
+        TestUtils.superficialEnumCodeCoverage(Mode.class);
+    }
+
+    /**
+     * Unit test of {@link SelectActionCursor} enum.
+     */
+    @Test
+    public void testEnumSelectActionCursor() {
+        TestUtils.superficialEnumCodeCoverage(SelectActionCursor.class);
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java	(revision 11978)
+++ trunk/test/unit/org/openstreetmap/josm/actions/search/PushbackTokenizerTest.java	(revision 11978)
@@ -0,0 +1,31 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.search;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.search.PushbackTokenizer.Token;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit tests for class {@link SearchCompiler}.
+ */
+public class PushbackTokenizerTest {
+
+    /**
+     * Setup rules.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Unit test of {@link Token} enum.
+     */
+    @Test
+    public void testEnumToken() {
+        TestUtils.superficialEnumCodeCoverage(Token.class);
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java	(revision 11978)
+++ trunk/test/unit/org/openstreetmap/josm/actions/search/SearchActionTest.java	(revision 11978)
@@ -0,0 +1,31 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.search;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit tests for class {@link SearchCompiler}.
+ */
+public class SearchActionTest {
+
+    /**
+     * Setup rules.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Unit test of {@link SearchMode} enum.
+     */
+    @Test
+    public void testEnumSearchMode() {
+        TestUtils.superficialEnumCodeCoverage(SearchMode.class);
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java	(revision 11974)
+++ trunk/test/unit/org/openstreetmap/josm/actions/search/SearchCompilerTest.java	(revision 11978)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting;
+import org.openstreetmap.josm.actions.search.SearchCompiler.ExactKeyValue;
 import org.openstreetmap.josm.actions.search.SearchCompiler.Match;
 import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
@@ -482,3 +483,11 @@
                 Paths.get(TestUtils.getRegressionDataFile(14217, "filter.txt"))), StandardCharsets.UTF_8)));
     }
+
+    /**
+     * Unit test of {@link SearchCompiler.ExactKeyValue.Mode} enum.
+     */
+    @Test
+    public void testEnumExactKeyValueMode() {
+        TestUtils.superficialEnumCodeCoverage(ExactKeyValue.Mode.class);
+    }
 }
