Index: trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java	(revision 16690)
+++ trunk/test/unit/org/openstreetmap/josm/gui/tagging/presets/items/ComboTest.java	(revision 16691)
@@ -4,6 +4,8 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
+import java.util.Arrays;
 import java.util.Collections;
 
@@ -13,4 +15,5 @@
 import org.junit.Test;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -38,4 +41,44 @@
         assertTrue(new Combo().addToPanel(p, Collections.<OsmPrimitive>emptyList(), false));
         assertTrue(p.getComponentCount() > 0);
+    }
+
+    /**
+     * Unit test for {@link ComboMultiSelect#use_last_as_default} and {@link ComboMultiSelect#getItemToSelect}
+     */
+    @Test
+    public void testUseLastAsDefault() {
+        Combo combo = new Combo();
+        combo.key = "addr:country";
+        combo.use_last_as_default = 1;
+        combo.values_from = "java.util.Locale#getISOCountries";
+        OsmPrimitive way = OsmUtils.createPrimitive("way");
+        OsmPrimitive wayAT = OsmUtils.createPrimitive("way addr:country=AT");
+        OsmPrimitive waySI = OsmUtils.createPrimitive("way addr:country=SI");
+
+        combo.addToPanel(new JPanel(), Collections.singleton(way), false);
+        assertEquals("", combo.getSelectedValue());
+
+        combo.default_ = "SI";
+        combo.addToPanel(new JPanel(), Collections.singleton(way), false);
+        assertEquals("SI", combo.getSelectedValue());
+        combo.addToPanel(new JPanel(), Collections.singleton(wayAT), false);
+        assertEquals("AT", combo.getSelectedValue());
+        combo.default_ = null;
+
+        KeyedItem.LAST_VALUES.clear();
+        KeyedItem.LAST_VALUES.put("addr:country", "AT");
+        combo.addToPanel(new JPanel(), Collections.singleton(way), false);
+        assertEquals("AT", combo.getSelectedValue());
+        combo.addToPanel(new JPanel(), Collections.singleton(wayAT), true);
+        assertEquals("AT", combo.getSelectedValue());
+        combo.addToPanel(new JPanel(), Collections.singleton(way), true);
+        assertEquals("", combo.getSelectedValue());
+        combo.use_last_as_default = 2; // "force"
+        combo.addToPanel(new JPanel(), Collections.singleton(way), true);
+        assertEquals("AT", combo.getSelectedValue());
+        KeyedItem.LAST_VALUES.clear();
+
+        combo.addToPanel(new JPanel(), Arrays.asList(wayAT, waySI), true);
+        assertEquals(tr("<different>"), combo.getSelectedValue());
     }
 
