Index: trunk/test/unit/org/openstreetmap/josm/TestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 11101)
+++ trunk/test/unit/org/openstreetmap/josm/TestUtils.java	(revision 11102)
@@ -10,7 +10,10 @@
 import java.io.InputStream;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Comparator;
 
+import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
@@ -245,3 +248,22 @@
         return relation;
     }
+
+    /**
+     * Creates a new empty command.
+     * @return a new empty command
+     */
+    public static Command newCommand() {
+        return new Command() {
+            @Override
+            public String getDescriptionText() {
+                return "";
+            }
+
+            @Override
+            public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
+                    Collection<OsmPrimitive> added) {
+                // Do nothing
+            }
+        };
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/ConflictResolverTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/ConflictResolverTest.java	(revision 11102)
+++ trunk/test/unit/org/openstreetmap/josm/gui/conflict/pair/ConflictResolverTest.java	(revision 11102)
@@ -0,0 +1,83 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.conflict.pair;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit tests of {@link ConflictResolver} class.
+ */
+public class ConflictResolverTest {
+
+    /**
+     * Setup test.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    /**
+     * Unit test of {@link ConflictResolver#buildResolveCommand} - empty case.
+     */
+    @Test
+    public void testBuildResolveCommandEmpty() {
+        assertNotNull(new ConflictResolver().buildResolveCommand());
+    }
+
+    /**
+     * Unit test of {@link ConflictResolver#buildResolveCommand} - node case.
+     */
+    @Test
+    public void testBuildResolveCommandNode() {
+        ConflictResolver resolver = new ConflictResolver();
+        Node n1 = new Node(LatLon.SOUTH_POLE);
+        n1.put("source", "my");
+        Node n2 = new Node(LatLon.NORTH_POLE);
+        n2.put("source", "theirs");
+        resolver.populate(new Conflict<>(n1, n2));
+        resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
+        assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
+    }
+
+    /**
+     * Unit test of {@link ConflictResolver#buildResolveCommand} - way case.
+     */
+    @Test
+    public void testBuildResolveCommandWay() {
+        ConflictResolver resolver = new ConflictResolver();
+        Way w1 = new Way();
+        w1.put("source", "my");
+        Way w2 = new Way();
+        w2.put("source", "theirs");
+        resolver.populate(new Conflict<>(w1, w2));
+        resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
+        assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
+    }
+
+    /**
+     * Unit test of {@link ConflictResolver#buildResolveCommand} - relation case.
+     */
+    @Test
+    public void testBuildResolveCommandRelation() {
+        ConflictResolver resolver = new ConflictResolver();
+        Relation r1 = new Relation();
+        r1.put("source", "my");
+        Relation r2 = new Relation();
+        r2.put("source", "theirs");
+        resolver.populate(new Conflict<>(r1, r2));
+        resolver.decideRemaining(MergeDecisionType.KEEP_MINE);
+        assertFalse(((SequenceCommand) resolver.buildResolveCommand()).getChildren().isEmpty());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java	(revision 11101)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java	(revision 11102)
@@ -7,4 +7,9 @@
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -24,8 +29,8 @@
 
     /**
-     * Unit test of {@link CommandStackDialog} class.
+     * Unit test of {@link CommandStackDialog} class - empty case.
      */
     @Test
-    public void testCommandStackDialog() {
+    public void testCommandStackDialogEmpty() {
         CommandStackDialog dlg = new CommandStackDialog();
         dlg.showDialog();
@@ -34,3 +39,31 @@
         assertFalse(dlg.isVisible());
     }
+
+    /**
+     * Unit test of {@link CommandStackDialog} class - not empty case.
+     */
+    @Test
+    public void testCommandStackDialogNotEmpty() {
+        OsmDataLayer layer = new OsmDataLayer(new DataSet(), "", null);
+        Main.getLayerManager().addLayer(layer);
+        try {
+            Command cmd1 = TestUtils.newCommand();
+            Command cmd2 = TestUtils.newCommand();
+            Main.main.undoRedo.add(cmd1);
+            Main.main.undoRedo.add(cmd2);
+            Main.main.undoRedo.undo(1);
+
+            assertFalse(Main.main.undoRedo.commands.isEmpty());
+            assertFalse(Main.main.undoRedo.redoCommands.isEmpty());
+
+            CommandStackDialog dlg = new CommandStackDialog();
+            dlg.showDialog();
+            assertTrue(dlg.isVisible());
+            dlg.hideDialog();
+            assertFalse(dlg.isVisible());
+        } finally {
+            Main.main.undoRedo.clean();
+            Main.getLayerManager().removeLayer(layer);
+        }
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/io/auth/CredentialsAgentExceptionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/auth/CredentialsAgentExceptionTest.java	(revision 11102)
+++ trunk/test/unit/org/openstreetmap/josm/io/auth/CredentialsAgentExceptionTest.java	(revision 11102)
@@ -0,0 +1,37 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.io.auth;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit tests of {@link CredentialsAgentException} class.
+ */
+public class CredentialsAgentExceptionTest {
+
+    /**
+     * Setup test
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Unit test of {@code CredentialsAgentException#CredentialsAgentException}
+     */
+    @Test
+    public void testCredentialsAgentException() {
+        String msg = "test1";
+        Exception cause = new Exception("test2");
+        assertEquals(msg, new CredentialsAgentException(msg).getMessage());
+        assertEquals(cause, new CredentialsAgentException(cause).getCause());
+        CredentialsAgentException exc = new CredentialsAgentException(msg, cause);
+        assertEquals(msg, exc.getMessage());
+        assertEquals(cause, exc.getCause());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java	(revision 11102)
+++ trunk/test/unit/org/openstreetmap/josm/tools/bugreport/DebugTextDisplayTest.java	(revision 11102)
@@ -0,0 +1,40 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools.bugreport;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Unit test of {@link DebugTextDisplay} class.
+ */
+public class DebugTextDisplayTest {
+    /**
+     * Setup test
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    /**
+     * Test {@link DebugTextDisplay#getCodeText}
+     */
+    @Test
+    public void testGetCodeText() {
+        assertEquals("test", new DebugTextDisplay("test").getCodeText());
+    }
+
+    /**
+     * Test {@link DebugTextDisplay#copyToClipboard}
+     */
+    @Test
+    public void testCopyToClipboard() {
+        new DebugTextDisplay("copy").copyToClipboard();
+        assertEquals(String.format("{{{%ncopy%n}}}"), ClipboardUtils.getClipboardStringContent());
+    }
+}
