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() {
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 Calendar) {
166 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
167 return sdf.format(((Calendar) o).getTime());
168 }
169
170 return o.toString();
171 }
172
173
174
175 protected boolean isEqual(Object expected, Object actual) {
176 if (expected == null && actual == null) {
177 return true;
178 }
179
180 if (expected != null && expected.equals(actual)) {
181 return true;
182 }
183
184 return false;
185 }
186
187 protected CmisTestResult assertIsTrue(Boolean test, CmisTestResult success, CmisTestResult failure) {
188 if (test != null && test) {
189 return success;
190 }
191
192 if (test == null) {
193 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Null!"));
194 } else {
195 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "False!"));
196 }
197 }
198
199 protected CmisTestResult assertIsFalse(Boolean test, CmisTestResult success, CmisTestResult failure) {
200 if (test != null && !test) {
201 return success;
202 }
203
204 if (test == null) {
205 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Null!"));
206 } else {
207 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "True!"));
208 }
209 }
210
211 protected CmisTestResult assertNull(Object object, CmisTestResult success, CmisTestResult failure) {
212 if (object == null) {
213 return success;
214 }
215
216 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Object is not null!"));
217 }
218
219 protected CmisTestResult assertNotNull(Object object, CmisTestResult success, CmisTestResult failure) {
220 if (object != null) {
221 return success;
222 }
223
224 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Object is null!"));
225 }
226
227 protected CmisTestResult assertStringNullOrEmpty(String str, CmisTestResult success, CmisTestResult failure) {
228 if (str == null || str.length() == 0) {
229 return success;
230 }
231
232 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String has this value: " + str));
233 }
234
235 protected CmisTestResult assertStringNotEmpty(String str, CmisTestResult success, CmisTestResult failure) {
236 if (str != null && str.length() > 0) {
237 return success;
238 }
239
240 if (str == null) {
241 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String is null!"));
242 } else {
243 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "String is empty!"));
244 }
245 }
246
247 protected CmisTestResult assertListNotEmpty(List<?> list, CmisTestResult success, CmisTestResult failure) {
248 if (list != null && list.size() > 0) {
249 return success;
250 }
251
252 if (list == null) {
253 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "List is null!"));
254 } else {
255 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "List is empty!"));
256 }
257 }
258
259 protected CmisTestResult assertEquals(Object expected, Object actual, CmisTestResult success, CmisTestResult failure) {
260 if (isEqual(expected, actual)) {
261 return success;
262 }
263
264 return addResultChild(
265 failure,
266 createResult(CmisTestResultStatus.INFO, "expected: " + formatValue(expected) + " / actual: "
267 + formatValue(actual)));
268 }
269
270 protected CmisTestResult assertContains(Collection<?> collection, Object value, CmisTestResult success,
271 CmisTestResult failure) {
272 if (collection == null) {
273 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Collection is null!"));
274 }
275
276 if (collection.contains(value)) {
277 return success;
278 }
279
280 return addResultChild(failure,
281 createResult(CmisTestResultStatus.INFO, "Collection does not contain '" + formatValue(value) + "'"));
282 }
283
284 protected CmisTestResult assertEqualLists(List<?> expected, List<?> actual, CmisTestResult success,
285 CmisTestResult failure) {
286 if (expected == null && actual == null) {
287 return success;
288 }
289
290 if (expected == null) {
291 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Expected list is null!"));
292 }
293
294 if (actual == null) {
295 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Actual list is null!"));
296 }
297
298 if (expected.size() != actual.size()) {
299 return addResultChild(
300 failure,
301 createResult(CmisTestResultStatus.INFO, "List sizes don't match! expected: " + expected.size()
302 + " / actual: " + actual.size()));
303 }
304
305 for (int i = 0; i < expected.size(); i++) {
306 if (!isEqual(expected.get(i), actual.get(i))) {
307 return addResultChild(
308 failure,
309 createResult(CmisTestResultStatus.INFO, "expected list item[" + i + "]: "
310 + formatValue(expected.get(i)) + " / actual list item[" + i + "]: "
311 + formatValue(actual.get(i))));
312 }
313 }
314
315 return success;
316 }
317
318 protected CmisTestResult assertEqualSet(Set<?> expected, Set<?> actual, CmisTestResult success,
319 CmisTestResult failure) {
320 if (expected == null && actual == null) {
321 return success;
322 }
323
324 if (expected == null) {
325 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Expected set is null!"));
326 }
327
328 if (actual == null) {
329 return addResultChild(failure, createResult(CmisTestResultStatus.INFO, "Actual set is null!"));
330 }
331
332 if (expected.size() != actual.size()) {
333 return addResultChild(
334 failure,
335 createResult(CmisTestResultStatus.INFO, "Set sizes don't match! expected: " + expected.size()
336 + " / actual: " + actual.size()));
337 }
338
339 for (Object o : expected) {
340 if (!actual.contains(o)) {
341 return addResultChild(failure,
342 createResult(CmisTestResultStatus.INFO, "Item not in actual set: " + formatValue(o)));
343 }
344 }
345
346 return success;
347 }
348 }