Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7166)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7167)
@@ -3,4 +3,5 @@
 
 import java.text.MessageFormat;
+import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.Objects;
@@ -95,10 +96,5 @@
                 return REGEX.equals(this) ? contains : !contains;
             case ONE_OF:
-                String[] parts = testString.split(";");
-                for (String part : parts) {
-                    if (Objects.equals(prototypeString, part.trim()))
-                        return true;
-                }
-                return false;
+                return Arrays.asList(testString.split("\\s*;\\s*")).contains(prototypeString);
             case BEGINS_WITH:
                 return testString.startsWith(prototypeString);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 7166)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 7167)
@@ -122,4 +122,27 @@
 
     @Test
+    public void testBeginsEndsWithCondition() throws Exception {
+        def condition = (Condition.KeyValueCondition) getParser('[foo ^= bar]').condition(Condition.Context.PRIMITIVE)
+        assert Condition.Op.BEGINS_WITH.equals(condition.op)
+        assert condition.applies(getEnvironment("foo", "bar123"))
+        assert !condition.applies(getEnvironment("foo", "123bar"))
+        assert !condition.applies(getEnvironment("foo", "123bar123"))
+        condition = (Condition.KeyValueCondition) getParser('[foo $= bar]').condition(Condition.Context.PRIMITIVE)
+        assert Condition.Op.ENDS_WITH.equals(condition.op)
+        assert !condition.applies(getEnvironment("foo", "bar123"))
+        assert condition.applies(getEnvironment("foo", "123bar"))
+        assert !condition.applies(getEnvironment("foo", "123bar123"))
+    }
+
+    @Test
+    public void testOneOfCondition() throws Exception {
+        def condition = getParser('[vending~=stamps]').condition(Condition.Context.PRIMITIVE)
+        assert condition.applies(getEnvironment("vending", "stamps"))
+        assert condition.applies(getEnvironment("vending", "bar;stamps;foo"))
+        assert !condition.applies(getEnvironment("vending", "every;thing;else"))
+        assert !condition.applies(getEnvironment("vending", "or_nothing"))
+    }
+
+    @Test
     public void testStandardKeyCondition() throws Exception {
         def c1 = (Condition.KeyCondition) getParser("[ highway ]").condition(Condition.Context.PRIMITIVE)
