View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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.util.*;
25  import java.util.function.*;
26  
27  import org.apache.juneau.*;
28  import org.apache.juneau.json.*;
29  import org.junit.jupiter.api.*;
30  
31  @Deprecated
32  class CollectionAssertion_Test extends TestBase {
33  
34  	//------------------------------------------------------------------------------------------------------------------
35  	// Helpers
36  	//------------------------------------------------------------------------------------------------------------------
37  
38  	private <T> CollectionAssertion<T> test(Collection<T> value) {
39  		return assertCollection(value).setSilent();
40  	}
41  
42  	//-----------------------------------------------------------------------------------------------------------------
43  	// Basic tests
44  	//-----------------------------------------------------------------------------------------------------------------
45  
46  	@Test void a01_msg() {
47  		assertThrows(BasicAssertionError.class, ()->test(null).setMsg("A {0}", 1).isExists(), "A 1");
48  		assertThrows(RuntimeException.class, ()->test(null).setMsg("A {0}", 1).setThrowable(RuntimeException.class).isExists(), "A 1");
49  	}
50  
51  	@Test void a02_stdout() {
52  		test(null).setStdOut().setSilent();
53  	}
54  
55  	//-----------------------------------------------------------------------------------------------------------------
56  	// Transform tests
57  	//-----------------------------------------------------------------------------------------------------------------
58  
59  	@Test void ba01a_asString() {
60  		var x = alist(1);
61  		var nil = nlist(Integer.class);
62  		test(x).asString().is("[1]");
63  		test(nil).asString().isNull();
64  	}
65  
66  	@Test void ba01b_asString_wSerializer() {
67  		var x = alist(1);
68  		var nil = nlist(Integer.class);
69  		var s = Json5Serializer.DEFAULT;
70  		test(x).asString(s).is("[1]");
71  		test(nil).asString(s).is("null");
72  	}
73  
74  	@Test void ba01c_asString_wPredicate() {
75  		var x1 = alist(1);
76  		test(x1).asString(x -> "foo").is("foo");
77  	}
78  
79  	@Test void ba02_asJson() {
80  		var x = alist(1);
81  		var nil = nlist(Integer.class);
82  		test(x).asJson().is("[1]");
83  		test(nil).asJson().is("null");
84  	}
85  
86  	@Test void ba03_asJsonSorted() {
87  		var x1 = alist(2,1);
88  		var nil = nlist(Integer.class);
89  		test(x1).asJsonSorted().is("[1,2]");
90  		test(nil).asJsonSorted().is("null");
91  	}
92  
93  	@Test void ba04_apply() {
94  		var x1 = alist(1);
95  		var x2 = alist(2);
96  		test(x1).asTransformed(x -> x2).is(x2);
97  	}
98  
99  	@Test void bb01_asStrings() {
100 		var x1 = alist(1);
101 		var nil = nlist(Integer.class);
102 		test(x1).asStrings().asJoin().is("1");
103 		test(nil).asStrings().isNull();
104 	}
105 
106 	@Test void bb02_size() {
107 		var x1 = alist(1);
108 		var nil = nlist(Integer.class);
109 		test(x1).asSize().is(1);
110 		test(nil).asSize().isNull();
111 	}
112 
113 	//-----------------------------------------------------------------------------------------------------------------
114 	// Test tests
115 	//-----------------------------------------------------------------------------------------------------------------
116 
117 	@Test void ca01_exists() {
118 		var x = alist();
119 		var nil = nlist(Integer.class);
120 		test(x).isExists().isExists();
121 		assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
122 	}
123 
124 	@Test void ca02_isNull() {
125 		var x = alist();
126 		var nil = nlist(Integer.class);
127 		test(nil).isNull();
128 		assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
129 	}
130 
131 	@Test void ca03_isNotNull() {
132 		var x = alist();
133 		var nil = nlist(Integer.class);
134 		test(x).isNotNull();
135 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
136 	}
137 
138 	@Test void ca04a_is_T() {
139 		var x1 = alist(1,2);
140 		var x1a = alist(1,2);
141 		var x2 = alist(3,4);
142 		var nil = nlist(Integer.class);
143 		test(x1).is(x1);
144 		test(x1).is(x1a);
145 		test(nil).is(nil);
146 		assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='[3, 4]'.  Actual='[1, 2]'.");
147 		assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value.  Expect='null'.  Actual='[1, 2]'.");
148 		assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='[3, 4]'.  Actual='null'.");
149 	}
150 
151 	@Test void ca04b_is_predicate() {
152 		var x1 = alist(1,2);
153 		test(x1).is(x->x.size()==2);
154 		assertThrown(()->test(x1).is(x->x.size()==3)).asMessage().asOneLine().is("Unexpected value: '[1, 2]'.");
155 		assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched.  Value='[1, 2]'.");
156 	}
157 
158 	@Test void ca05_isNot() {
159 		var x1 = alist(1,2);
160 		var x1a = alist(1,2);
161 		var x2 = alist(3,4);
162 		var nil = nlist(Integer.class);
163 		test(x1).isNot(x2);
164 		test(x1).isNot(nil);
165 		test(nil).isNot(x1);
166 		assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value.  Did not expect='[1, 2]'.  Actual='[1, 2]'.");
167 		assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value.  Did not expect='null'.  Actual='null'.");
168 	}
169 
170 	@Test void ca06_isAny() {
171 		var x1 = alist(1,2);
172 		var x1a = alist(1,2);
173 		var x2 = alist(3,4);
174 		var nil = nlist(Integer.class);
175 		test(x1).isAny(x1a, x2);
176 		assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[[3, 4]]'.  Actual='[1, 2]'.");
177 		assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found.  Expect='[]'.  Actual='[1, 2]'.");
178 		assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[[3, 4]]'.  Actual='null'.");
179 	}
180 
181 	@Test void ca07_isNotAny() {
182 		var x1 = alist(1,2);
183 		var x1a = alist(1,2);
184 		var x2 = alist(3,4);
185 		var nil = nlist(Integer.class);
186 		test(x1).isNotAny(x2);
187 		test(x1).isNotAny();
188 		test(nil).isNotAny(x2);
189 		assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='[1, 2]'.  Actual='[1, 2]'.");
190 		assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='null'.  Actual='null'.");
191 	}
192 
193 	@Test void ca08_isSame() {
194 		var x1 = list(1,2);
195 		var x1a = list(1,2);
196 		var nil = nlist(Integer.class);
197 		test(x1).isSame(x1);
198 		test(nil).isSame(nil);
199 		assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='[1, 2](ArrayList@*)'.  Actual='[1, 2](ArrayList@*)'.");
200 		assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='[1, 2](ArrayList@*)'.  Actual='null(null)'.");
201 		assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value.  Expect='null(null)'.  Actual='[1, 2](ArrayList@*)'.");
202 	}
203 
204 	@Test void ca09_isSameJsonAs() {
205 		var x1 = alist(1,2);
206 		var x1a = alist(1,2);
207 		var x2 = alist(3,4);
208 		var nil = nlist(Integer.class);
209 		test(x1).isSameJsonAs(x1a);
210 		test(nil).isSameJsonAs(nil);
211 		assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='[1,2]'.");
212 		assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='null'.");
213 		assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='[1,2]'.");
214 	}
215 
216 	@Test void ca10_isSameSortedJsonAs() {
217 		var x1 = alist(1,2);
218 		var x1a = alist(2,1);
219 		var x2 = alist(3,4);
220 		var nil = nlist(Integer.class);
221 		test(x1).isSameSortedJsonAs(x1a);
222 		test(nil).isSameSortedJsonAs(nil);
223 		assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='[1,2]'.");
224 		assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='null'.");
225 		assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='[1,2]'.");
226 	}
227 
228 	@Test void ca11_isSameSerializedAs() {
229 		var x1 = alist(1,2);
230 		var x1a = alist(1,2);
231 		var x2 = alist(3,4);
232 		var nil = nlist(Integer.class);
233 		var s = Json5Serializer.DEFAULT;
234 		test(x1).isSameSerializedAs(x1a, s);
235 		test(nil).isSameSerializedAs(nil, s);
236 		assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='[1,2]'.");
237 		assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='[3,4]'.  Actual='null'.");
238 		assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='[1,2]'.");
239 	}
240 
241 	@Test void ca12_isType() {
242 		var x = list(1,2);
243 		var nil = nlist(Integer.class);
244 		test(x).isType(List.class);
245 		test(x).isType(Object.class);
246 		assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.util.ArrayList'.");
247 		assertThrown(()->test(nil).isType(Integer.class)).asMessage().asOneLine().is("Value was null.");
248 		assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
249 	}
250 
251 	@Test void ca13_isExactType() {
252 		var x = list(1,2);
253 		var nil = nlist(Integer.class);
254 		test(x).isExactType(ArrayList.class);
255 		assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.Object'.  Actual='java.util.ArrayList'.");
256 		assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.util.ArrayList'.");
257 		assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
258 		assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
259 	}
260 
261 	@Test void ca14_isString() {
262 		var x = alist(1,2);
263 		var nil = nlist(Integer.class);
264 		test(x).isString("[1, 2]");
265 		test(nil).isString(null);
266 		assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='[1, 2]'.");
267 		assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='[1, 2]'.");
268 		assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
269 	}
270 
271 	@Test void ca15_isJson() {
272 		var x = alist(1,2);
273 		var nil = nlist(Integer.class);
274 		test(x).isJson("[1,2]");
275 		test(nil).isJson("null");
276 		assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='[1,2]'.");
277 		assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='[1,2]'.");
278 		assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
279 	}
280 
281 	@Test void cb01_isEmpty() {
282 		var x1 = alist();
283 		var x2 = alist("a","b");
284 		var nil = nlist(String.class);
285 		test(x1).isEmpty();
286 		assertThrows(BasicAssertionError.class, ()->test(x2).isEmpty(), "Collection was not empty.");
287 		assertThrows(BasicAssertionError.class, ()->test(nil).isEmpty(), "Value was null.");
288 	}
289 
290 	@Test void cb02_isNotEmpty() {
291 		var x1 = alist();
292 		var x2 = alist("a","b");
293 		var nil = nlist(String.class);
294 		test(x2).isNotEmpty();
295 		assertThrows(BasicAssertionError.class, ()->test(x1).isNotEmpty(), "Collection was empty.");
296 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotEmpty(), "Value was null.");
297 	}
298 
299 	@Test void cb03_contains() {
300 		var x = alist("a","b");
301 		var nil = nlist(String.class);
302 		test(x).isContains("a");
303 		assertThrown(()->test(x).isContains("z")).asMessage().asOneLine().is("Collection did not contain expected value.  Expect='z'.  Value='[a, b]'.");
304 		assertThrows(BasicAssertionError.class, ()->test(nil).isContains("z"), "Value was null.");
305 	}
306 
307 	@Test void cb04_doesNotContain() {
308 		var x = alist("a","b");
309 		var nil = nlist(String.class);
310 		test(x).isNotContains("z");
311 		assertThrown(()->test(x).isNotContains("a")).asMessage().asOneLine().is("Collection contained unexpected value.  Unexpected='a'.  Value='[a, b]'.");
312 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotContains("z"), "Value was null.");
313 	}
314 
315 	@Test void cb05_any() {
316 		var x1 = alist("a","b");
317 		var nil = nlist(String.class);
318 		test(x1).isAny(x->x.equals("a"));
319 		test(x1).isAny((Predicate<String>)null);
320 		assertThrown(()->test(x1).isAny(x->x.equals("z"))).asMessage().asOneLine().is("Collection did not contain tested value.  Value='[a, b]'.");
321 		assertThrows(BasicAssertionError.class, ()->test(nil).isAny(x->x.equals("z")), "Value was null.");
322 	}
323 
324 	@Test void cb06_all() {
325 		var x1 = alist("a","b");
326 		var nil = nlist(String.class);
327 		test(x1).isAll(x->x!=null);
328 		test(x1).isAll(null);
329 		assertThrown(()->test(x1).isAll(x->x.equals("z"))).asMessage().asOneLine().is("Collection did not contain tested value.  Value='[a, b]'.");
330 		assertThrows(BasicAssertionError.class, ()->test(nil).isAll(x->x.equals("z")), "Value was null.");
331 	}
332 
333 	@Test void cb07_isSize() {
334 		var x = alist("a","b");
335 		var nil = nlist(String.class);
336 		test(x).isSize(2);
337 		assertThrown(()->test(x).isSize(0)).asMessage().asOneLine().is("Collection did not have the expected size.  Expect=0.  Actual=2.");
338 		assertThrows(BasicAssertionError.class, ()->test(nil).isSize(0), "Value was null.");
339 	}
340 }