This project has retired. For details please refer to its
Attic page.
AbstractCmisTest xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.tck.impl;
20
21 import java.text.SimpleDateFormat;
22 import java.util.ArrayList;
23 import java.util.Calendar;
24 import java.util.Collection;
25 import java.util.List;
26 import java.util.Map;
27 import java.util.Set;
28
29 import org.apache.chemistry.opencmis.tck.CmisTest;
30 import org.apache.chemistry.opencmis.tck.CmisTestResult;
31 import org.apache.chemistry.opencmis.tck.CmisTestResultStatus;
32 import org.junit.Test;
33
34
35
36
37 public abstract class AbstractCmisTest implements CmisTest {
38
39 private Map<String, String> parameters;
40 private AbstractCmisTestGroup group;
41 private String name;
42 private String description;
43 private boolean isEnabled = true;
44 private List<CmisTestResult> results;
45 private long time;
46
47 public void init(Map<String, String> parameters) {
48 this.parameters = parameters;
49 results = new ArrayList<CmisTestResult>();
50 }
51
52 protected Map<String, String> getParameters() {
53 return parameters;
54 }
55
56 public String getName() {
57 return name;
58 }
59
60 public void setName(String name) {
61 this.name = name;
62 }
63
64 public String getDescription() {
65 return description;
66 }
67
68 public void setDescription(String description) {
69 this.description = description;
70 }
71
72 public void setGroup(AbstractCmisTestGroup group) {
73 this.group = group;
74 }
75
76 public AbstractCmisTestGroup getGroup() {
77 return group;
78 }
79
80 public abstract void run() throws Exception;
81
82 @Test
83 public void junit() throws Exception {
84 JUnitHelper.run(this);
85 }
86
87 public List<CmisTestResult> getResults() {
88 return results;
89 }
90
91 public boolean isEnabled() {
92 return isEnabled;
93 }
94
95 public void setEnabled(boolean enabled) {
96 this.isEnabled = enabled;
97 }
98
99 public long getTime() {
100 return time;
101 }
102
103 public void setTime(long time) {
104 this.time = time;
105 }
106
107 public CmisTestResultImpl createResult(CmisTestResultStatus status, String message, Throwable exception,
108 boolean isFatal) {
109 return new CmisTestResultImpl(group.getName(), name, message, status, exception, isFatal);
110 }
111
112 public CmisTestResultImpl createResult(CmisTestResultStatus status, String message, boolean isFatal) {
113 return new CmisTestResultImpl(group.getName(), name, message, status, null, isFatal);
114 }
115
116 public CmisTestResultImpl createResult(CmisTestResultStatus status, String message) {
117 return new CmisTestResultImpl(group.getName(), name, message, status, null, false);
118 }
119
120 public CmisTestResultImpl createInfoResult(String message) {
121 return new CmisTestResultImpl(group.getName(), name, message, CmisTestResultStatus.INFO, null, false);
122 }
123
124 public void addResult(CmisTestResult result) {
125 if (result != null) {
126 if (result instanceof CmisTestResultImpl) {
127 ((CmisTestResultImpl) result).setStackTrace(getStackTrace());
128 }
129
130 results.add(result);
131 if (result.isFatal()) {
132 throw new FatalTestException(result.getMessage());
133 }
134 }
135 }
136
137 protected StackTraceElement[] getStackTrace() {
138 StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
139 StackTraceElement[] shortStackTrace = new StackTraceElement[0];
140 if (stackTrace.length > 3) {
141 shortStackTrace = new StackTraceElement[stackTrace.length - 3];
142 System.arraycopy(stackTrace, 3, shortStackTrace, 0, stackTrace.length - 3);
143 }
144
145 return shortStackTrace;
146 }
147
148 protected CmisTestResult addResultChild(CmisTestResult result, CmisTestResult child) {
149 if (result == null) {
150 return null;
151 }
152
153 result.getChildren().add(child);
154
155 return result;
156 }
157
158
159
160 protected String formatValue(Object o) {
161 if (o == null) {
162 return "null";
163 }
164
165 if (o instanceof String) {
166 return "'" + o + "'";
167 } else if (o instanceof Calendar) {
168 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
169 return sdf.format(((Calendar) o).getTime());
170 }
171
172 return o.toString();
173 }
174
175
176
177 protected boolean isEqual(Object expected, Object actual) {
178 if (expected == null && actual == null) {
179 return true;
180 }
181
182 if (expected != null && expected.equals(actual)) {
183 return true;
184 }
185
186 return false;
187 }
188
189 protected CmisTestResult assertIsTrue(Boolean test, CmisTestResult success, CmisTestResult failure) {
190 if (test != null && test) {
191 return success;
192 }
193
194 if (test == null) {
195 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Null!"));
196 } else {
197 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "False!"));
198 }
199 }
200
201 protected CmisTestResult assertIsFalse(Boolean test, CmisTestResult success, CmisTestResult failure) {
202 if (test != null && !test) {
203 return success;
204 }
205
206 if (test == null) {
207 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Null!"));
208 } else {
209 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "True!"));
210 }
211 }
212
213 protected CmisTestResult assertNull(Object object, CmisTestResult success, CmisTestResult failure) {
214 if (object == null) {
215 return success;
216 }
217
218 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Object is not null!"));
219 }
220
221 protected CmisTestResult assertNotNull(Object object, CmisTestResult success, CmisTestResult failure) {
222 if (object != null) {
223 return success;
224 }
225
226 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Object is null!"));
227 }
228
229 protected CmisTestResult assertStringNullOrEmpty(String str, CmisTestResult success, CmisTestResult failure) {
230 if (str == null || str.length() == 0) {
231 return success;
232 }
233
234 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String has this value: " + str));
235 }
236
237 protected CmisTestResult assertStringNotEmpty(String str, CmisTestResult success, CmisTestResult failure) {
238 if (str != null && str.length() > 0) {
239 return success;
240 }
241
242 if (str == null) {
243 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String is null!"));
244 } else {
245 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String is empty!"));
246 }
247 }
248
249 protected CmisTestResult assertListNotEmpty(List<?> list, CmisTestResult success, CmisTestResult failure) {
250 if (list != null && !list.isEmpty()) {
251 return success;
252 }
253
254 if (list == null) {
255 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "List is null!"));
256 } else {
257 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "List is empty!"));
258 }
259 }
260
261 protected CmisTestResult assertListNullOrEmpty(List<?> list, CmisTestResult success, CmisTestResult failure) {
262 if (list == null || list.isEmpty()) {
263 return success;
264 }
265
266 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "List is not empty!"));
267
268 }
269
270 protected CmisTestResult assertEquals(Object expected, Object actual, CmisTestResult success, CmisTestResult failure) {
271 if (isEqual(expected, actual)) {
272 return success;
273 }
274
275 return addResultChild(
276 failure,
277 createResult(CmisTestResultStatus.INFO, "expected: " + formatValue(expected) + " / actual: "
278 + formatValue(actual)));
279 }
280
281 protected CmisTestResult assertContains(Collection<?> collection, Object value, CmisTestResult success,
282 CmisTestResult failure) {
283 if (collection == null) {
284 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Collection is null!"));
285 }
286
287 if (collection.contains(value)) {
288 return success;
289 }
290
291 return addResultChild(failure,
292 createResult(CmisTestResultStatus.INFO, "Collection does not contain " + formatValue(value)));
293 }
294
295 protected CmisTestResult assertEqualLists(List<?> expected, List<?> actual, CmisTestResult success,
296 CmisTestResult failure) {
297 if (expected == null && actual == null) {
298 return success;
299 }
300
301 if (expected == null) {
302 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Expected list is null!"));
303 }
304
305 if (actual == null) {
306 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Actual list is null!"));
307 }
308
309 if (expected.size() != actual.size()) {
310 return addResultChild(
311 failure,
312 createResult(CmisTestResultStatus.INFO, "List sizes don't match! expected: " + expected.size()
313 + " / actual: " + actual.size()));
314 }
315
316 for (int i = 0; i < expected.size(); i++) {
317 if (!isEqual(expected.get(i), actual.get(i))) {
318 return addResultChild(
319 failure,
320 createResult(CmisTestResultStatus.INFO, "expected list item[" + i + "]: "
321 + formatValue(expected.get(i)) + " / actual list item[" + i + "]: "
322 + formatValue(actual.get(i))));
323 }
324 }
325
326 return success;
327 }
328
329 protected CmisTestResult assertEqualSet(Set<?> expected, Set<?> actual, CmisTestResult success,
330 CmisTestResult failure) {
331 if (expected == null && actual == null) {
332 return success;
333 }
334
335 if (expected == null) {
336 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Expected set is null!"));
337 }
338
339 if (actual == null) {
340 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Actual set is null!"));
341 }
342
343 if (expected.size() != actual.size()) {
344 return addResultChild(
345 failure,
346 createResult(CmisTestResultStatus.INFO, "Set sizes don't match! expected: " + expected.size()
347 + " / actual: " + actual.size()));
348 }
349
350 for (Object o : expected) {
351 if (!actual.contains(o)) {
352 return addResultChild(failure,
353 createResult(CmisTestResultStatus.INFO, "Item not in actual set: " + formatValue(o)));
354 }
355 }
356
357 return success;
358 }
359 }