source: josm/trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java@ 17531

Last change on this file since 17531 was 17333, checked in by Don-vip, 3 years ago

see #20129 - Fix typos and misspellings in the code (patch by gaben)

  • Property svn:eol-style set to native
File size: 9.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.mappaint.mapcss;
3
4import static org.junit.jupiter.api.Assertions.assertEquals;
5import static org.junit.jupiter.api.Assertions.assertFalse;
6import static org.junit.jupiter.api.Assertions.assertTrue;
7
8import org.junit.jupiter.api.BeforeEach;
9import org.junit.jupiter.api.Test;
10import org.junit.jupiter.api.extension.RegisterExtension;
11import org.openstreetmap.josm.data.osm.OsmPrimitive;
12import org.openstreetmap.josm.data.osm.OsmUtils;
13import org.openstreetmap.josm.gui.mappaint.Environment;
14import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Context;
15import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.ToTagConvertable;
16import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.Op;
17import org.openstreetmap.josm.gui.mappaint.mapcss.ConditionFactory.SimpleKeyValueCondition;
18import org.openstreetmap.josm.testutils.JOSMTestRules;
19
20import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
21
22/**
23 * This test universally tests all {@link Condition}s.
24 * @author Michael Zangl
25 */
26class ConditionTest {
27 /**
28 * We need prefs for nodes.
29 */
30 @RegisterExtension
31 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
32 public JOSMTestRules test = new JOSMTestRules().preferences();
33 private OsmPrimitive node0;
34 private OsmPrimitive node1;
35 private OsmPrimitive node2;
36 private OsmPrimitive node3;
37 private OsmPrimitive node4;
38
39 /**
40 * Set up some useful test data.
41 */
42 @BeforeEach
43 public void setUp() {
44 node0 = OsmUtils.createPrimitive("n");
45 node1 = OsmUtils.createPrimitive("n k1=v1 k2=v1 f1=0.2 r1=ababx c1=xya one=a;b");
46 node2 = OsmUtils.createPrimitive("n k1=v1 k2=v1a f1=0.8 r1=abxabxab c1=xy one=a;;x");
47 node3 = OsmUtils.createPrimitive("n k1=v1 f1=-100 c1=axy one=x;y;z");
48 node4 = OsmUtils.createPrimitive("n k1=v2a k2=v3 f1=x r1=abab c1=axya one=x;a;y");
49 }
50
51 /**
52 * Test {@link Op#EQ}.
53 */
54 @Test
55 void testKeyValueEq() {
56 Condition op = ConditionFactory.createKeyValueCondition("k1", "v1", Op.EQ, Context.PRIMITIVE, false);
57 assertFalse(op.applies(genEnv(node0)));
58 assertTrue(op.applies(genEnv(node1)));
59 assertTrue(op.applies(genEnv(node2)));
60 assertTrue(op.applies(genEnv(node3)));
61 assertFalse(op.applies(genEnv(node4)));
62
63 assertTrue(op instanceof SimpleKeyValueCondition);
64 assertEquals("[k1=v1]", op.toString());
65 assertEquals("k1", ((ToTagConvertable) op).asTag(null).getKey());
66 assertEquals("v1", ((ToTagConvertable) op).asTag(null).getValue());
67 }
68
69 /**
70 * Test {@link Op#EQ} and interpretation as key
71 */
72 @Test
73 void testKeyValueEqAsKey() {
74 Condition op = ConditionFactory.createKeyValueCondition("k1", "k2", Op.EQ, Context.PRIMITIVE, true);
75 assertFalse(op.applies(genEnv(node0)));
76 assertTrue(op.applies(genEnv(node1)));
77 assertFalse(op.applies(genEnv(node2)));
78 assertFalse(op.applies(genEnv(node3)));
79 assertFalse(op.applies(genEnv(node4)));
80
81 assertEquals("k1", ((ToTagConvertable) op).asTag(null).getKey());
82 assertEquals("k2", ((ToTagConvertable) op).asTag(null).getValue());
83 }
84
85 /**
86 * Test {@link Op#NEQ}
87 */
88 @Test
89 void testKeyValueNeq() {
90 Condition op = ConditionFactory.createKeyValueCondition("k1", "v1", Op.NEQ, Context.PRIMITIVE, false);
91 assertTrue(op.applies(genEnv(node0)));
92 assertFalse(op.applies(genEnv(node1)));
93 assertFalse(op.applies(genEnv(node2)));
94 assertFalse(op.applies(genEnv(node3)));
95 assertTrue(op.applies(genEnv(node4)));
96 }
97
98 /**
99 * Test {@link Op#GREATER_OR_EQUAL}
100 */
101 @Test
102 void testKeyValueGreatherEq() {
103 Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.GREATER_OR_EQUAL, Context.PRIMITIVE, false);
104 assertFalse(op.applies(genEnv(node0)));
105 assertTrue(op.applies(genEnv(node1)));
106 assertTrue(op.applies(genEnv(node2)));
107 assertFalse(op.applies(genEnv(node3)));
108 assertFalse(op.applies(genEnv(node4)));
109 }
110
111 /**
112 * Test {@link Op#GREATER}
113 */
114 @Test
115 void testKeyValueGreather() {
116 Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.GREATER, Context.PRIMITIVE, false);
117 assertFalse(op.applies(genEnv(node0)));
118 assertFalse(op.applies(genEnv(node1)));
119 assertTrue(op.applies(genEnv(node2)));
120 assertFalse(op.applies(genEnv(node3)));
121 assertFalse(op.applies(genEnv(node4)));
122 }
123
124 /**
125 * Test {@link Op#LESS_OR_EQUAL}
126 */
127 @Test
128 void testKeyValueLessEq() {
129 Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.LESS_OR_EQUAL, Context.PRIMITIVE, false);
130 assertFalse(op.applies(genEnv(node0)));
131 assertTrue(op.applies(genEnv(node1)));
132 assertFalse(op.applies(genEnv(node2)));
133 assertTrue(op.applies(genEnv(node3)));
134 assertFalse(op.applies(genEnv(node4)));
135 }
136
137 /**
138 * Test {@link Op#LESS}
139 */
140 @Test
141 void testKeyValueLess() {
142 Condition op = ConditionFactory.createKeyValueCondition("f1", "0.2", Op.LESS, Context.PRIMITIVE, false);
143 assertFalse(op.applies(genEnv(node0)));
144 assertFalse(op.applies(genEnv(node1)));
145 assertFalse(op.applies(genEnv(node2)));
146 assertTrue(op.applies(genEnv(node3)));
147 assertFalse(op.applies(genEnv(node4)));
148 }
149
150 /**
151 * Test {@link Op#REGEX}
152 */
153 @Test
154 void testKeyValueRegex() {
155 Condition op = ConditionFactory.createKeyValueCondition("r1", "(ab){2}", Op.REGEX, Context.PRIMITIVE, false);
156 assertFalse(op.applies(genEnv(node0)));
157 assertTrue(op.applies(genEnv(node1)));
158 assertFalse(op.applies(genEnv(node2)));
159 assertFalse(op.applies(genEnv(node3)));
160 assertTrue(op.applies(genEnv(node4)));
161 }
162
163 /**
164 * Test {@link Op#NREGEX}
165 */
166 @Test
167 void testKeyValueNregex() {
168 Condition op = ConditionFactory.createKeyValueCondition("r1", "(ab){2}", Op.NREGEX, Context.PRIMITIVE, false);
169 assertTrue(op.applies(genEnv(node0)));
170 assertFalse(op.applies(genEnv(node1)));
171 assertTrue(op.applies(genEnv(node2)));
172 assertTrue(op.applies(genEnv(node3)));
173 assertFalse(op.applies(genEnv(node4)));
174 }
175
176 /**
177 * Test {@link Op#ONE_OF}
178 */
179 @Test
180 void testKeyValueOneOf() {
181 Condition op = ConditionFactory.createKeyValueCondition("one", "a", Op.ONE_OF, Context.PRIMITIVE, false);
182 assertFalse(op.applies(genEnv(node0)));
183 assertTrue(op.applies(genEnv(node1)));
184 assertTrue(op.applies(genEnv(node2)));
185 assertFalse(op.applies(genEnv(node3)));
186 assertTrue(op.applies(genEnv(node4)));
187 }
188
189 /**
190 * Test {@link Op#BEGINS_WITH}
191 */
192 @Test
193 void testKeyValueBeginsWith() {
194 Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.BEGINS_WITH, Context.PRIMITIVE, false);
195 assertFalse(op.applies(genEnv(node0)));
196 assertTrue(op.applies(genEnv(node1)));
197 assertTrue(op.applies(genEnv(node2)));
198 assertFalse(op.applies(genEnv(node3)));
199 assertFalse(op.applies(genEnv(node4)));
200 }
201
202 /**
203 * Test {@link Op#ENDS_WITH}
204 */
205 @Test
206 void testKeyValueEndsWith() {
207 Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.ENDS_WITH, Context.PRIMITIVE, false);
208 assertFalse(op.applies(genEnv(node0)));
209 assertFalse(op.applies(genEnv(node1)));
210 assertTrue(op.applies(genEnv(node2)));
211 assertTrue(op.applies(genEnv(node3)));
212 assertFalse(op.applies(genEnv(node4)));
213 }
214
215 /**
216 * Test {@link Op#CONTAINS}
217 */
218 @Test
219 void testKeyValueContains() {
220 Condition op = ConditionFactory.createKeyValueCondition("c1", "xy", Op.CONTAINS, Context.PRIMITIVE, false);
221 assertFalse(op.applies(genEnv(node0)));
222 assertTrue(op.applies(genEnv(node1)));
223 assertTrue(op.applies(genEnv(node2)));
224 assertTrue(op.applies(genEnv(node3)));
225 assertTrue(op.applies(genEnv(node4)));
226 }
227
228 /**
229 * Test of {@link ConditionFactory#createRegexpKeyRegexpValueCondition(String, String, Op)}
230 */
231 @Test
232 void testRegexpKeyValueRegexpCondition() {
233 Condition op = ConditionFactory.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.REGEX);
234 assertFalse(op.applies(genEnv(node0)));
235 assertFalse(op.applies(genEnv(node1)));
236 assertTrue(op.applies(genEnv(node2)));
237 assertFalse(op.applies(genEnv(node3)));
238 assertTrue(op.applies(genEnv(node4)));
239
240 Condition notOp = ConditionFactory.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.NREGEX);
241 assertTrue(notOp.applies(genEnv(node0)));
242 assertTrue(notOp.applies(genEnv(node1)));
243 assertFalse(notOp.applies(genEnv(node2)));
244 assertTrue(notOp.applies(genEnv(node3)));
245 assertFalse(notOp.applies(genEnv(node4)));
246 }
247
248 private Environment genEnv(OsmPrimitive primitive) {
249 return new Environment(primitive);
250 }
251}
Note: See TracBrowser for help on using the repository browser.