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 org.apache.juneau.*;
25  import org.apache.juneau.json.*;
26  import org.junit.jupiter.api.*;
27  
28  @Deprecated
29  class ComparableAssertion_Test extends TestBase {
30  
31  	//------------------------------------------------------------------------------------------------------------------
32  	// Helpers
33  	//------------------------------------------------------------------------------------------------------------------
34  
35  	private <T extends Comparable<T>> ComparableAssertion<T> test(T value) {
36  		return assertComparable(value).setSilent();
37  	}
38  
39  	//-----------------------------------------------------------------------------------------------------------------
40  	// Basic tests
41  	//-----------------------------------------------------------------------------------------------------------------
42  
43  	@Test void a01_msg() {
44  		assertThrows(BasicAssertionError.class, ()->test(null).setMsg("A {0}", 1).isExists(), "A 1");
45  		assertThrows(RuntimeException.class, ()->test(null).setMsg("A {0}", 1).setThrowable(RuntimeException.class).isExists(), "A 1");
46  	}
47  
48  	@Test void a02_stdout() {
49  		test(null).setStdOut();
50  	}
51  
52  	//-----------------------------------------------------------------------------------------------------------------
53  	// Transform tests
54  	//-----------------------------------------------------------------------------------------------------------------
55  
56  	@Test void ba01a_asString() {
57  		var x = 1;
58  		var nil = n(Integer.class);
59  		test(x).asString().is("1");
60  		test(nil).asString().isNull();
61  	}
62  
63  	@Test void ba01b_asString_wSerializer() {
64  		var x = 1;
65  		var nil = n(Integer.class);
66  		var s = Json5Serializer.DEFAULT;
67  		test(x).asString(s).is("1");
68  		test(nil).asString(s).is("null");
69  	}
70  
71  	@Test void ba01c_asString_wPredicate() {
72  		var x1 = 1;
73  		test(x1).asString(x -> "foo").is("foo");
74  	}
75  
76  	@Test void ba02_asJson() {
77  		var x = 1;
78  		var nil = n(Integer.class);
79  		test(x).asJson().is("1");
80  		test(nil).asJson().is("null");
81  	}
82  
83  	@Test void ba03_asJsonSorted() {
84  		var x = 1;
85  		var nil = n(Integer.class);
86  		test(x).asJsonSorted().is("1");
87  		test(nil).asJsonSorted().is("null");
88  	}
89  
90  	@Test void ba04_apply() {
91  		var x1 = 1;
92  		var x2 = 2;
93  		test(x1).asTransformed(x -> x2).is(x2);
94  	}
95  
96  	//-----------------------------------------------------------------------------------------------------------------
97  	// Test tests
98  	//-----------------------------------------------------------------------------------------------------------------
99  
100 	@Test void ca01_exists() {
101 		var x = 1;
102 		var nil = n(Integer.class);
103 		test(x).isExists().isExists();
104 		assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
105 	}
106 
107 	@Test void ca02_isNull() {
108 		var x = 1;
109 		var nil = n(Integer.class);
110 		test(nil).isNull();
111 		assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
112 	}
113 
114 	@Test void ca03_isNotNull() {
115 		var x = 1;
116 		var nil = n(Integer.class);
117 		test(x).isNotNull();
118 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
119 	}
120 
121 	@Test void ca04a_is_T() {
122 		var x1 = 1;
123 		var x1a = 1;
124 		var x2 = 2;
125 		var nil = n(Integer.class);
126 		test(x1).is(x1);
127 		test(x1).is(x1a);
128 		test(nil).is(nil);
129 		assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='2'.  Actual='1'.");
130 		assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value.  Expect='null'.  Actual='1'.");
131 		assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='2'.  Actual='null'.");
132 	}
133 
134 	@Test void ca04b_is_predicate() {
135 		var x1 = 1;
136 		test(x1).is(x->x==1);
137 		assertThrown(()->test(x1).is(x->x==2)).asMessage().asOneLine().is("Unexpected value: '1'.");
138 		assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched.  Value='1'.");
139 	}
140 
141 	@Test void ca05_isNot() {
142 		var x1 = 1;
143 		var x1a = 1;
144 		var x2 = 2;
145 		var nil = n(Integer.class);
146 		test(x1).isNot(x2);
147 		test(x1).isNot(nil);
148 		test(nil).isNot(x1);
149 		assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value.  Did not expect='1'.  Actual='1'.");
150 		assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value.  Did not expect='null'.  Actual='null'.");
151 	}
152 
153 	@Test void ca06_isAny() {
154 		var x1 = 1;
155 		var x1a = 1;
156 		var x2 = 2;
157 		var nil = n(Integer.class);
158 		test(x1).isAny(x1a, x2);
159 		assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[2]'.  Actual='1'.");
160 		assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found.  Expect='[]'.  Actual='1'.");
161 		assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[2]'.  Actual='null'.");
162 	}
163 
164 	@Test void ca07_isNotAny() {
165 		var x1 = 1;
166 		var x1a = 1;
167 		var x2 = 2;
168 		var nil = n(Integer.class);
169 		test(x1).isNotAny(x2);
170 		test(x1).isNotAny();
171 		test(nil).isNotAny(x2);
172 		assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='1'.  Actual='1'.");
173 		assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='null'.  Actual='null'.");
174 	}
175 
176 	@Test void ca08_isSame() {
177 		var x1 = Integer.valueOf(999);
178 		var x1a = Integer.valueOf(999);
179 		var nil = n(Integer.class);
180 		test(x1).isSame(x1);
181 		test(nil).isSame(nil);
182 		assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='999(Integer@*)'.  Actual='999(Integer@*)'.");
183 		assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='999(Integer@*)'.  Actual='null(null)'.");
184 		assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value.  Expect='null(null)'.  Actual='999(Integer@*)'.");
185 	}
186 
187 	@Test void ca09_isSameJsonAs() {
188 		var x1 = 1;
189 		var x1a = 1;
190 		var x2 = 2;
191 		var nil = n(Integer.class);
192 		test(x1).isSameJsonAs(x1a);
193 		test(nil).isSameJsonAs(nil);
194 		assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
195 		assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
196 		assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
197 	}
198 
199 	@Test void ca10_isSameSortedJsonAs() {
200 		var x1 = 1;
201 		var x1a = 1;
202 		var x2 = 2;
203 		var nil = n(Integer.class);
204 		test(x1).isSameSortedJsonAs(x1a);
205 		test(nil).isSameSortedJsonAs(nil);
206 		assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
207 		assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
208 		assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
209 	}
210 
211 	@Test void ca11_isSameSerializedAs() {
212 		var x1 = 1;
213 		var x1a = 1;
214 		var x2 = 2;
215 		var nil = n(Integer.class);
216 		var s = Json5Serializer.DEFAULT;
217 		test(x1).isSameSerializedAs(x1a, s);
218 		test(nil).isSameSerializedAs(nil, s);
219 		assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
220 		assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
221 		assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
222 	}
223 
224 	@Test void ca12_isType() {
225 		var x = 1;
226 		var nil = n(Integer.class);
227 		test(x).isType(Integer.class);
228 		test(x).isType(Object.class);
229 		assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.lang.Integer'.");
230 		assertThrown(()->test(nil).isType(String.class)).asMessage().asOneLine().is("Value was null.");
231 		assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
232 	}
233 
234 	@Test void ca13_isExactType() {
235 		var x = 1;
236 		var nil = n(Integer.class);
237 		test(x).isExactType(Integer.class);
238 		assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.Object'.  Actual='java.lang.Integer'.");
239 		assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.lang.Integer'.");
240 		assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
241 		assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
242 	}
243 
244 	@Test void ca14_isString() {
245 		var x = 1;
246 		var nil = n(Integer.class);
247 		test(x).isString("1");
248 		test(nil).isString(null);
249 		assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='1'.");
250 		assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='1'.");
251 		assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
252 	}
253 
254 	@Test void ca15_isJson() {
255 		var x = 1;
256 		var nil = n(Integer.class);
257 		test(x).isJson("1");
258 		test(nil).isJson("null");
259 		assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='1'.");
260 		assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='1'.");
261 		assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
262 	}
263 
264 	@Test void cb01_isGt() {
265 		var x1 = 1;
266 		var x2 = 2;
267 		var nil = n(Integer.class);
268 		test(x2).isGt(x1);
269 		assertThrown(()->test(x1).isGt(x1)).asMessage().asOneLine().is("Value was not greater than expected.  Expect='1'.  Actual='1'.");
270 		assertThrown(()->test(x1).isGt(x2)).asMessage().asOneLine().is("Value was not greater than expected.  Expect='2'.  Actual='1'.");
271 		assertThrows(IllegalArgumentException.class, ()->test(x1).isGt(nil), "Argument 'value' cannot be null.");
272 		assertThrows(BasicAssertionError.class, ()->test(nil).isGt(x2), "Value was null.");
273 	}
274 
275 	@Test void cb02_isGte() {
276 		var x1 = 1;
277 		var x1a = Integer.valueOf(1);
278 		var x2 = 2;
279 		var nil = n(Integer.class);
280 		test(x2).isGte(x1);
281 		test(x1).isGte(x1);
282 		test(x1).isGte(x1a);
283 		assertThrown(()->test(x1).isGte(x2)).asMessage().asOneLine().is("Value was not greater than or equals to expected.  Expect='2'.  Actual='1'.");
284 		assertThrows(IllegalArgumentException.class, ()->test(x1).isGte(nil), "Argument 'value' cannot be null.");
285 		assertThrows(BasicAssertionError.class, ()->test(nil).isGte(x2), "Value was null.");
286 	}
287 
288 	@Test void cb03_isLt() {
289 		var x1 = 1;
290 		var x2 = 2;
291 		var nil = n(Integer.class);
292 		test(x1).isLt(x2);
293 		assertThrown(()->test(x1).isLt(x1)).asMessage().asOneLine().is("Value was not less than expected.  Expect='1'.  Actual='1'.");
294 		assertThrown(()->test(x2).isLt(x1)).asMessage().asOneLine().is("Value was not less than expected.  Expect='1'.  Actual='2'.");
295 		assertThrows(IllegalArgumentException.class, ()->test(x2).isLt(nil), "Argument 'value' cannot be null.");
296 		assertThrows(BasicAssertionError.class, ()->test(nil).isLt(x1), "Value was null.");
297 	}
298 
299 	@Test void cb04_isLte() {
300 		var x1 = 1;
301 		var x1a = Integer.valueOf(1);
302 		var x2 = 2;
303 		var nil = n(Integer.class);
304 		test(x1).isLte(x2);
305 		test(x1).isLte(x1);
306 		test(x1).isLte(x1a);
307 		assertThrown(()->test(x2).isLte(x1)).asMessage().asOneLine().is("Value was not less than or equals to expected.  Expect='1'.  Actual='2'.");
308 		assertThrows(IllegalArgumentException.class, ()->test(x2).isLte(nil), "Argument 'value' cannot be null.");
309 		assertThrows(BasicAssertionError.class, ()->test(nil).isLte(x1), "Value was null.");
310 	}
311 
312 	@Test void cb05_isBetween() {
313 		var x1 = 1;
314 		var x2 = 2;
315 		var x3 = 3;
316 		var x4 = 4;
317 		var nil = n(Integer.class);
318 		test(x1).isBetween(x1, x3);
319 		test(x2).isBetween(x1, x3);
320 		test(x3).isBetween(x1, x3);
321 		assertThrown(()->test(x4).isBetween(x1, x3)).asMessage().asOneLine().is("Value was not less than or equals to expected.  Expect='3'.  Actual='4'.");
322 		assertThrows(BasicAssertionError.class, ()->test(nil).isBetween(x1, x3), "Value was null.");
323 		assertThrows(IllegalArgumentException.class, ()->test(x1).isBetween(nil, x3), "Argument 'lower' cannot be null.");
324 		assertThrown(()->test(x1).isBetween(x1, nil)).asMessage().asOneLine().is("Argument 'upper' cannot be null.");
325 	}
326 }