Index: trunk/test/unit/org/openstreetmap/josm/gui/history/NodeListViewerTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/history/NodeListViewerTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/history/NodeListViewerTest.java	(revision 9816)
@@ -0,0 +1,28 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.history;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+/**
+ * Unit tests of {@link NodeListViewer} class.
+ */
+public class NodeListViewerTest {
+
+    /**
+     * Test for {@link NodeListViewer#NodeListViewer} - {@code null} handling.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testNodeListViewerNull() {
+        new NodeListViewer(null);
+    }
+
+    /**
+     * Test for {@link NodeListViewer#NodeListViewer} - nominal case.
+     */
+    @Test
+    public void testNodeListViewerNominal() {
+        assertNotNull(new NodeListViewer(new HistoryBrowserModel()));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/io/UploadPrimitivesTaskTest.java	(revision 9816)
@@ -0,0 +1,37 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.io;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * Unit tests of {@link UploadPrimitivesTask} class.
+ */
+public class UploadPrimitivesTaskTest {
+
+    /**
+     * Setup tests
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Test of {@link UploadPrimitivesTask#UploadPrimitivesTask}.
+     */
+    @Test
+    public void testUploadPrimitivesTask() {
+        assertNotNull(new UploadPrimitivesTask(
+                new UploadStrategySpecification(),
+                new OsmDataLayer(new DataSet(), null, null),
+                null,
+                new Changeset()));
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityActionTest.java	(revision 9816)
@@ -0,0 +1,36 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.gpx;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.io.GpxReaderTest;
+
+/**
+ * Unit tests of {@link ChooseTrackVisibilityAction} class.
+ */
+public class ChooseTrackVisibilityActionTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Test action.
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testAction() throws Exception {
+        final GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "minimal.gpx");
+        GpxLayer gpxLayer = new GpxLayer(gpx);
+        ChooseTrackVisibilityAction action = new ChooseTrackVisibilityAction(gpxLayer);
+        action.actionPerformed(null);
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackActionTest.java	(revision 9816)
@@ -0,0 +1,48 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.gpx;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.GpxReaderTest;
+
+/**
+ * Unit tests of {@link DownloadAlongTrackAction} class.
+ */
+public class DownloadAlongTrackActionTest {
+
+    /**
+     * Setup test.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init(true);
+    }
+
+    /**
+     * Test action.
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testDownload() throws Exception {
+        final OsmDataLayer layer = new OsmDataLayer(new DataSet(), getClass().getName(), null);
+        try {
+            Main.main.addLayer(layer);
+            // Perform action
+            final GpxData gpx = GpxReaderTest.parseGpxData(TestUtils.getTestDataRoot() + "minimal.gpx");
+            PleaseWaitRunnable task = new DownloadAlongTrackAction(gpx).createTask();
+            assertNotNull(task);
+        } finally {
+            // Ensure we clean the place before leaving, even if test fails.
+            Main.main.removeLayer(layer);
+        }
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagEditorModelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagEditorModelTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagEditorModelTest.java	(revision 9816)
@@ -0,0 +1,31 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Unit tests of {@link TagEditorModel} class.
+ */
+public class TagEditorModelTest {
+
+    /**
+     * Unit test of {@link TagEditorModel#TagEditorModel}.
+     */
+    @Test
+    public void testTagEditorModel() {
+        TagEditorModel tem = new TagEditorModel();
+        tem.add(null, null);
+        assertEquals(1, tem.getRowCount());
+        assertEquals(2, tem.getColumnCount());
+        tem.add("key", "val");
+        assertEquals(2, tem.getRowCount());
+        assertEquals(2, tem.getColumnCount());
+        tem.delete(null);
+        tem.delete("");
+        assertEquals(1, tem.getRowCount());
+        tem.delete("key");
+        assertEquals(0, tem.getRowCount());
+    }
+}
Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagModelTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagModelTest.java	(revision 9816)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/TagModelTest.java	(revision 9816)
@@ -0,0 +1,73 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.tagging;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit tests of {@link TagModel} class.
+ */
+public class TagModelTest {
+
+    /**
+     * Unit test of {@link TagModel#TagModel} - single value.
+     */
+    @Test
+    public void testTagModelSingleValue() {
+        TagModel tm = new TagModel();
+        assertEquals("", tm.getName());
+        assertEquals("", tm.getValue());
+        assertEquals(1, tm.getValueCount());
+        assertTrue(tm.hasValue(null));
+        assertTrue(tm.hasValue(""));
+
+        tm.clearValues();
+        assertEquals(0, tm.getValueCount());
+        assertEquals("", tm.getValue());
+
+        tm.setValue(null);
+        assertEquals(1, tm.getValueCount());
+        assertEquals("", tm.getValue());
+
+        tm = new TagModel("key");
+        assertEquals("key", tm.getName());
+        assertEquals("", tm.getValue());
+        assertEquals(1, tm.getValueCount());
+        assertTrue(tm.hasValue(""));
+    }
+
+    /**
+     * Unit test of {@link TagModel#TagModel} - multiple values.
+     */
+    @Test
+    public void testTagModelMultipleValues() {
+        TagModel tm = new TagModel("key2", "val2");
+        assertEquals("key2", tm.getName());
+        assertEquals("val2", tm.getValue());
+        assertEquals(1, tm.getValueCount());
+        assertTrue(tm.hasValue("val2"));
+
+        tm.setName("key3");
+        tm.setValue("val3");
+        assertEquals("key3", tm.getName());
+        assertEquals("val3", tm.getValue());
+        assertEquals(1, tm.getValueCount());
+        assertTrue(tm.hasValue("val3"));
+
+        tm.addValue("val4");
+        tm.addValue("val4");
+        assertEquals(2, tm.getValueCount());
+        assertEquals("val3;val4", tm.getValue());
+
+        tm.removeValue("something");
+        tm.removeValue(null);
+        assertEquals(2, tm.getValueCount());
+        assertEquals("val3;val4", tm.getValue());
+
+        tm.removeValue("val3");
+        assertEquals(1, tm.getValueCount());
+        assertEquals("val4", tm.getValue());
+    }
+}
