source: josm/trunk/test/unit/org/openstreetmap/josm/tools/PredicatesTest.java@ 10553

Last change on this file since 10553 was 10553, checked in by Don-vip, 8 years ago

fix #13079 - Use JOSMTestRules instead of JOSMFixture (tools tests, patch by michael2402) - gsoc-core

  • Property svn:eol-style set to native
File size: 6.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.tools;
3
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertTrue;
6
7import java.util.Arrays;
8import java.util.Hashtable;
9import java.util.List;
10import java.util.Properties;
11import java.util.regex.Pattern;
12
13import org.junit.Rule;
14import org.junit.Test;
15import org.openstreetmap.josm.data.osm.Node;
16import org.openstreetmap.josm.data.osm.OsmPrimitive;
17import org.openstreetmap.josm.testutils.JOSMTestRules;
18
19import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20
21/**
22 * This test tests the {@link Predicate}s created by the {@link Predicates} class.
23 *
24 * @author Michael Zangl
25 */
26public class PredicatesTest {
27 /**
28 * Some of this depends on preferences.
29 */
30 @Rule
31 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
32 public JOSMTestRules test = new JOSMTestRules().preferences();
33
34 /**
35 * Test {@link Predicates#alwaysTrue()}
36 */
37 @Test
38 public void testAlwaysTrue() {
39 Predicate<Object> alwaysTrue = Predicates.alwaysTrue();
40 assertTrue(alwaysTrue.evaluate(new Object()));
41 assertTrue(alwaysTrue.evaluate(Boolean.TRUE));
42 }
43
44 /**
45 * Test {@link Predicates#alwaysFalse()}
46 */
47 @Test
48 public void testAlwaysFalse() {
49 Predicate<Object> alwaysFalse = Predicates.alwaysFalse();
50 assertFalse(alwaysFalse.evaluate(new Object()));
51 assertFalse(alwaysFalse.evaluate(Boolean.TRUE));
52 }
53
54 /**
55 * Test {@link Predicates#not(Predicate)}
56 */
57 @Test
58 public void testNot() {
59 Predicate<Boolean> not = Predicates.not(new Predicate<Boolean>() {
60 @Override
61 public boolean evaluate(Boolean object) {
62 return object;
63 }
64 });
65 assertFalse(not.evaluate(Boolean.TRUE));
66 assertTrue(not.evaluate(Boolean.FALSE));
67 }
68
69 /**
70 * Test {@link Predicates#equalTo(Object)}
71 */
72 @Test
73 public void testEqualTo() {
74 Integer testObject = Integer.valueOf(1);
75 Predicate<Integer> equalTo = Predicates.equalTo(testObject);
76 assertTrue(equalTo.evaluate(testObject));
77 assertTrue(equalTo.evaluate(Integer.valueOf(1)));
78
79 assertFalse(equalTo.evaluate(Integer.valueOf(2)));
80 assertFalse(equalTo.evaluate(null));
81 }
82
83 /**
84 * Test {@link Predicates#isOfClass(Class)}
85 */
86 @Test
87 public void testIsOfClass() {
88 Predicate<Object> isOfClass = Predicates.<Object>isOfClass(Hashtable.class);
89 assertFalse(isOfClass.evaluate(null));
90 assertFalse(isOfClass.evaluate(new Object()));
91 assertFalse(isOfClass.evaluate(new Properties()));
92 assertTrue(isOfClass.evaluate(new Hashtable<>()));
93 }
94
95 /**
96 * Test {@link Predicates#isOfClass(Class)}
97 */
98 @Test
99 public void testIsInstanceOf() {
100 Predicate<Object> isInstanceOf = Predicates.<Object>isInstanceOf(Hashtable.class);
101 assertFalse(isInstanceOf.evaluate(null));
102 assertFalse(isInstanceOf.evaluate(new Object()));
103 assertTrue(isInstanceOf.evaluate(new Properties()));
104 assertTrue(isInstanceOf.evaluate(new Hashtable<>()));
105 }
106
107 /**
108 * Test {@link Predicates#stringMatchesPattern(java.util.regex.Pattern)}
109 */
110 @Test
111 public void testStringMatchesPattern() {
112 Pattern p = Pattern.compile("ab?c");
113 Predicate<String> stringMatchesPattern = Predicates.stringMatchesPattern(p);
114 assertFalse(stringMatchesPattern.evaluate(""));
115 assertFalse(stringMatchesPattern.evaluate("a"));
116 assertFalse(stringMatchesPattern.evaluate("xabcx"));
117 assertTrue(stringMatchesPattern.evaluate("ac"));
118 assertTrue(stringMatchesPattern.evaluate("abc"));
119 }
120
121 /**
122 * Test {@link Predicates#stringContainsPattern(java.util.regex.Pattern)}
123 */
124 @Test
125 public void testStringContainsPattern() {
126 Pattern p = Pattern.compile("ab?c");
127 Predicate<String> stringContainsPattern = Predicates.stringContainsPattern(p);
128 assertFalse(stringContainsPattern.evaluate(""));
129 assertFalse(stringContainsPattern.evaluate("a"));
130 assertTrue(stringContainsPattern.evaluate("xabcx"));
131 assertTrue(stringContainsPattern.evaluate("ac"));
132 assertTrue(stringContainsPattern.evaluate("abc"));
133 assertTrue(stringContainsPattern.evaluate("xx\nabc\nx"));
134 }
135
136 /**
137 * Test {@link Predicates#stringContains(String)}
138 */
139 @Test
140 public void testStringContains() {
141 Predicate<String> stringContains = Predicates.stringContains("abc");
142 assertFalse(stringContains.evaluate(""));
143 assertFalse(stringContains.evaluate("a"));
144 assertTrue(stringContains.evaluate("xabcx"));
145 assertFalse(stringContains.evaluate("ac"));
146 assertTrue(stringContains.evaluate("abc"));
147 }
148
149 /**
150 * Test {@link Predicates#hasTag(String, String...)}
151 */
152 @Test
153 public void testHasTag() {
154 Predicate<OsmPrimitive> hasTag = Predicates.hasTag("key", "value");
155 Node n1 = new Node();
156 assertFalse(hasTag.evaluate(n1));
157 n1.put("Key", "x");
158 assertFalse(hasTag.evaluate(n1));
159 n1.put("key", "x");
160 assertFalse(hasTag.evaluate(n1));
161 n1.put("key", "value");
162 assertTrue(hasTag.evaluate(n1));
163 }
164
165 /**
166 * Test {@link Predicates#hasKey(String)}
167 */
168 @Test
169 public void testHasKey() {
170 Predicate<OsmPrimitive> hasKey = Predicates.hasKey("key");
171 Node n1 = new Node();
172 assertFalse(hasKey.evaluate(n1));
173 n1.put("Key", "x");
174 assertFalse(hasKey.evaluate(n1));
175 n1.put("key", "x");
176 assertTrue(hasKey.evaluate(n1));
177 }
178
179 /**
180 * Test {@link Predicates#inCollection(java.util.Collection)}
181 */
182 @Test
183 public void testInCollection() {
184 List<String> list = Arrays.asList("a", "b", "c");
185 Predicate<String> inCollection = Predicates.inCollection(list);
186 assertTrue(inCollection.evaluate("a"));
187 assertTrue(inCollection.evaluate("c"));
188 assertFalse(inCollection.evaluate("d"));
189 assertFalse(inCollection.evaluate(null));
190
191 List<String> list2 = Arrays.asList("a", "b", "c", null);
192 Predicate<String> inCollection2 = Predicates.inCollection(list2);
193 assertTrue(inCollection2.evaluate("a"));
194 assertTrue(inCollection2.evaluate("c"));
195 assertFalse(inCollection2.evaluate("d"));
196 assertTrue(inCollection2.evaluate(null));
197 }
198
199 /**
200 * Test {@link Predicates#isNull()}
201 */
202 @Test
203 public void testIsNull() {
204 Predicate<Object> isNull = Predicates.isNull();
205 assertTrue(isNull.evaluate(null));
206 assertFalse(isNull.evaluate(Integer.valueOf(2)));
207 }
208}
Note: See TracBrowser for help on using the repository browser.