1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.assertions;
18
19 import static org.apache.juneau.assertions.AssertionPredicates.ne;
20 import static org.apache.juneau.assertions.Assertions.*;
21 import static org.apache.juneau.common.utils.Utils.*;
22 import static org.junit.jupiter.api.Assertions.*;
23
24 import java.io.*;
25
26 import org.apache.juneau.*;
27 import org.apache.juneau.json.*;
28 import org.junit.jupiter.api.*;
29
30 @Deprecated
31 class ThrowableAssertion_Test extends TestBase {
32
33
34
35
36
37 private <V extends Throwable> ThrowableAssertion<V> test(V value) {
38 return assertThrowable(value).setSilent();
39 }
40
41 private Throwable throwable() {
42 return new RuntimeException();
43 }
44
45 private Throwable throwable(String msg) {
46 return new RuntimeException(msg);
47 }
48
49 private Throwable throwable(Throwable inner) {
50 return new RuntimeException(inner);
51 }
52
53
54
55
56 @Test void a01_msg() {
57 assertThrows(BasicAssertionError.class, ()->test(null).setMsg("Foo {0}", 1).isExists(), "Foo 1");
58 assertThrows(RuntimeException.class, ()->test(null).setMsg("Foo {0}", 1).setThrowable(RuntimeException.class).isExists(), "Foo 1");
59 }
60
61 @Test void a02_stdout() {
62 test(null).setStdOut();
63 }
64
65
66
67
68
69 @Test void ba01a_asString() {
70 var x = throwable("1");
71 var nil = n(Throwable.class);
72 test(x).asString().is("java.lang.RuntimeException: 1");
73 test(nil).asString().isNull();
74 }
75
76 @Test void ba01b_asString_wSerializer() {
77 var x = throwable("1");
78 var nil = n(Throwable.class);
79 var s = Json5Serializer.DEFAULT;
80 test(x).asString(s).is("'java.lang.RuntimeException: 1'");
81 test(nil).asString(s).is("null");
82 }
83
84 @Test void ba01c_asString_wPredicate() {
85 var x1 = throwable();
86 test(x1).asString(x -> "foo").is("foo");
87 }
88
89 @Test void ba02_asJson() {
90 var x = throwable("1");
91 var nil = n(Throwable.class);
92 test(x).asJson().is("'java.lang.RuntimeException: 1'");
93 test(nil).asJson().is("null");
94 }
95
96 @Test void ba03_asJsonSorted() {
97 var x1 = throwable("1");
98 var nil = n(Throwable.class);
99 test(x1).asJsonSorted().is("'java.lang.RuntimeException: 1'");
100 test(nil).asJsonSorted().is("null");
101 }
102
103 @Test void ba04_apply() {
104 var x1 = throwable("1");
105 var x2 = throwable("2");
106 test(x1).asTransformed(x -> x2).is(x2);
107 }
108
109 @Test void bb01_message() {
110 var x1 = throwable("1");
111 var x2 = throwable();
112 var nil = n(Throwable.class);
113 test(x1).asMessage().is("1");
114 test(x2).asMessage().isNull();
115 test(nil).asMessage().isNull();
116 }
117
118 @Test void bb02_messages() {
119 var x1 = throwable("1");
120 var x2 = throwable(x1);
121 var nil = n(Throwable.class);
122 test(x1).asMessages().isString("[1]");
123 test(x2).asMessages().isString("[java.lang.RuntimeException: 1, 1]");
124 test(nil).asMessages().isNull();
125 }
126
127 @Test void bb03_localizedMessage() {
128 var x1 = throwable("1");
129 var x2 = throwable();
130 var nil = n(Throwable.class);
131 test(x1).asLocalizedMessage().is("1");
132 test(x2).asLocalizedMessage().isNull();
133 test(nil).asLocalizedMessage().isNull();
134 }
135
136 @Test void bb04_localizedMessages() {
137 var x1 = throwable("1");
138 var x2 = throwable(x1);
139 var nil = n(Throwable.class);
140 test(x1).asLocalizedMessages().isString("[1]");
141 test(x2).asLocalizedMessages().isString("[java.lang.RuntimeException: 1, 1]");
142 test(nil).asLocalizedMessages().isNull();
143 }
144
145 @Test void bb05_stackTrace() {
146 var x1 = throwable();
147 var nil = n(Throwable.class);
148 test(x1).asStackTrace().asJoin().isContains("RuntimeException");
149 test(nil).asStackTrace().isNull();
150 }
151
152 @Test void bb06a_causedBy() {
153 var x1 = throwable(throwable("1"));
154 var x2 = throwable();
155 var nil = n(Throwable.class);
156 test(x1).asCausedBy().asMessage().is("1");
157 test(x2).asMessage().isNull();
158 test(nil).asCausedBy().asMessage().isNull();
159 }
160
161 @Test void bb06b_causedBy_wType() {
162 var x1 = throwable(throwable("1"));
163 var x2 = throwable();
164 var nil = n(Throwable.class);
165 test(x1).asCausedBy(RuntimeException.class).asMessage().is("1");
166 test(x2).asCausedBy(RuntimeException.class).isNull();
167 test(nil).asCausedBy(RuntimeException.class).isNull();
168 assertThrown(()->test(x1).asCausedBy(IOException.class)).asMessage().asOneLine().is("Caused-by exception not of expected type. Expected='java.io.IOException'. Actual='java.lang.RuntimeException'.");
169 }
170
171 @Test void bb07_find() {
172 var x1 = throwable(new IOException());
173 var x2 = throwable();
174 var nil = n(Throwable.class);
175 test(x1).asFind(RuntimeException.class).isExists();
176 test(x1).asFind(IOException.class).isExists();
177 test(x1).asFind(Exception.class).isExists();
178 test(x1).asFind(FileNotFoundException.class).isNull();
179 test(x2).asFind(RuntimeException.class).isExists();
180 test(x2).asFind(IOException.class).isNull();
181 test(nil).asFind(RuntimeException.class).isNull();
182 }
183
184
185
186
187
188 @Test void ca01_exists() {
189 var x = throwable();
190 var nil = n(Throwable.class);
191 test(x).isExists().isExists();
192 assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Exception was not thrown.");
193 }
194
195 @Test void ca02_isNull() {
196 var x = throwable();
197 var nil = n(Throwable.class);
198 test(nil).isNull();
199 assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
200 }
201
202 @Test void ca03_isNotNull() {
203 var x = throwable();
204 var nil = n(Throwable.class);
205 test(x).isNotNull();
206 assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
207 }
208
209 @Test void ca04a_is_T() {
210 var x1 = throwable("1");
211 var x1a = throwable("1");
212 var x2 = throwable("2");
213 var nil = n(Throwable.class);
214 test(x1).is(x1);
215 test(x1).is(x1a);
216 test(nil).is(nil);
217 assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("Unexpected value. Expect='java.lang.RuntimeException: 2'. Actual='java.lang.RuntimeException: 1'.");
218 assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value. Expect='null'. Actual='java.lang.RuntimeException: 1'.");
219 assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("Unexpected value. Expect='java.lang.RuntimeException: 2'. Actual='null'.");
220 }
221
222 @Test void ca04b_is_predicate() {
223 var x1 = throwable("1");
224 test(x1).is(x->x.getMessage().equals("1"));
225 assertThrown(()->test(x1).is(x->x.getMessage().length()==4)).asMessage().asOneLine().is("Unexpected value: 'java.lang.RuntimeException: 1'.");
226 assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched. Value='java.lang.RuntimeException: 1'.");
227 }
228
229 @Test void ca05_isNot() {
230 var x1 = throwable("1");
231 var x1a = throwable("1");
232 var x2 = throwable("2");
233 var nil = n(Throwable.class);
234 test(x1).isNot(x2);
235 test(x1).isNot(nil);
236 test(nil).isNot(x1);
237 assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value. Did not expect='java.lang.RuntimeException: 1'. Actual='java.lang.RuntimeException: 1'.");
238 assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value. Did not expect='null'. Actual='null'.");
239 }
240
241 @Test void ca06_isAny() {
242 var x1 = throwable("1");
243 var x1a = throwable("1");
244 var x2 = throwable("2");
245 var nil = n(Throwable.class);
246 test(x1).isAny(x1a, x2);
247 assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[java.lang.RuntimeException: 2]'. Actual='java.lang.RuntimeException: 1'.");
248 assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found. Expect='[]'. Actual='java.lang.RuntimeException: 1'.");
249 assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[java.lang.RuntimeException: 2]'. Actual='null'.");
250 }
251
252 @Test void ca07_isNotAny() {
253 var x1 = throwable("1");
254 var x1a = throwable("1");
255 var x2 = throwable("2");
256 var nil = n(Throwable.class);
257 test(x1).isNotAny(x2);
258 test(x1).isNotAny();
259 test(nil).isNotAny(x2);
260 assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found. Unexpected='java.lang.RuntimeException: 1'. Actual='java.lang.RuntimeException: 1'.");
261 assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found. Unexpected='null'. Actual='null'.");
262 }
263
264 @Test void ca08_isSame() {
265 var x1 = throwable("1");
266 var x1a = throwable("1");
267 var nil = n(Throwable.class);
268 test(x1).isSame(x1);
269 test(nil).isSame(nil);
270 assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='java.lang.RuntimeException: 1(RuntimeException@*)'. Actual='java.lang.RuntimeException: 1(RuntimeException@*)'.");
271 assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='java.lang.RuntimeException: 1(RuntimeException@*)'. Actual='null(null)'.");
272 assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value. Expect='null(null)'. Actual='java.lang.RuntimeException: 1(RuntimeException@*)'.");
273 }
274
275 @Test void ca09_isSameJsonAs() {
276 var x1 = throwable("1");
277 var x1a = throwable("1");
278 var x2 = throwable("2");
279 var nil = n(Throwable.class);
280 test(x1).isSameJsonAs(x1a);
281 test(nil).isSameJsonAs(nil);
282 assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual=''java.lang.RuntimeException: 1''.");
283 assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual='null'.");
284 assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''java.lang.RuntimeException: 1''.");
285 }
286
287 @Test void ca10_isSameSortedJsonAs() {
288 var x1 = throwable("1");
289 var x1a = throwable("1");
290 var x2 = throwable("2");
291 var nil = n(Throwable.class);
292 test(x1).isSameSortedJsonAs(x1a);
293 test(nil).isSameSortedJsonAs(nil);
294 assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual=''java.lang.RuntimeException: 1''.");
295 assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual='null'.");
296 assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''java.lang.RuntimeException: 1''.");
297 }
298
299 @Test void ca11_isSameSerializedAs() {
300 var x1 = throwable("1");
301 var x1a = throwable("1");
302 var x2 = throwable("2");
303 var nil = n(Throwable.class);
304 var s = Json5Serializer.DEFAULT;
305 test(x1).isSameSerializedAs(x1a, s);
306 test(nil).isSameSerializedAs(nil, s);
307 assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual=''java.lang.RuntimeException: 1''.");
308 assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect=''java.lang.RuntimeException: 2''. Actual='null'.");
309 assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''java.lang.RuntimeException: 1''.");
310 }
311
312 @Test void ca12_isType() {
313 var x = throwable();
314 var nil = n(Throwable.class);
315 test(x).isType(Exception.class);
316 test(x).isType(Object.class);
317 assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Exception was not expected type. Expect='java.lang.String'. Actual='java.lang.RuntimeException'.");
318 assertThrown(()->test(nil).isType(String.class)).asMessage().asOneLine().is("Exception was not thrown.");
319 assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
320 }
321
322 @Test void ca13_isExactType() {
323 var x = throwable();
324 var nil = n(Throwable.class);
325 test(x).isExactType(RuntimeException.class);
326 assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Exception was not expected type. Expect='java.lang.Object'. Actual='java.lang.RuntimeException'.");
327 assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Exception was not expected type. Expect='java.lang.String'. Actual='java.lang.RuntimeException'.");
328 assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Exception was not thrown.");
329 assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'type' cannot be null.");
330 }
331
332 @Test void ca14_isString() {
333 var x = throwable("1");
334 var nil = n(Throwable.class);
335 test(x).isString("java.lang.RuntimeException: 1");
336 test(nil).isString(null);
337 assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='java.lang.RuntimeException: 1'.");
338 assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='java.lang.RuntimeException: 1'.");
339 assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
340 }
341
342 @Test void ca15_isJson() {
343 var x = throwable("1");
344 var nil = n(Throwable.class);
345 test(x).isJson("'java.lang.RuntimeException: 1'");
346 test(nil).isJson("null");
347 assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual=''java.lang.RuntimeException: 1''.");
348 assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual=''java.lang.RuntimeException: 1''.");
349 assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
350 }
351 }