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.time.*;
25  import java.time.temporal.*;
26  import java.util.*;
27  
28  import org.apache.juneau.*;
29  import org.apache.juneau.json.*;
30  import org.junit.jupiter.api.*;
31  
32  @Deprecated
33  class DateAssertion_Test extends TestBase {
34  
35  	//------------------------------------------------------------------------------------------------------------------
36  	// Helpers
37  	//------------------------------------------------------------------------------------------------------------------
38  
39  	private DateAssertion test(Date value) {
40  		return assertDate(value).setSilent();
41  	}
42  
43  	private static Date date(String s) {
44  		return new Date(ZonedDateTime.parse(s).toEpochSecond()*1000);
45  	}
46  
47  	private static final Date
48  		MIN = date("1970-06-01T12:34:56Z"),
49  		MAX = date("2100-06-01T12:34:56Z"),
50  		MID1 = date("2000-06-01T12:34:56Z"),
51  		MID1a = date("2000-06-01T12:34:56Z"),
52  		MID2 = date("2010-06-01T12:34:56Z")
53  	;
54  
55  	//-----------------------------------------------------------------------------------------------------------------
56  	// Basic tests
57  	//-----------------------------------------------------------------------------------------------------------------
58  
59  	@Test void a01_msg() {
60  		assertThrows(BasicAssertionError.class, ()->test(null).setMsg("A {0}", 1).isExists(), "A 1");
61  		assertThrows(RuntimeException.class, ()->test(null).setMsg("A {0}", 1).setThrowable(RuntimeException.class).isExists(), "A 1");
62  	}
63  
64  	@Test void a02_stdout() {
65  		test(null).setStdOut();
66  	}
67  
68  	//-----------------------------------------------------------------------------------------------------------------
69  	// Transform tests
70  	//-----------------------------------------------------------------------------------------------------------------
71  
72  	@Test void ba01a_asString() {
73  		var x = MID1;
74  		var nil = n(Date.class);
75  		test(x).asString().isMatches("*2000");
76  		test(nil).asString().isNull();
77  	}
78  
79  	@Test void ba01b_asString_wSerializer() {
80  		var x = MID1;
81  		var nil = n(Date.class);
82  		var s = Json5Serializer.DEFAULT;
83  		test(x).asString(s).isMatches("'2000-*'");
84  		test(nil).asString(s).is("null");
85  	}
86  
87  	@Test void ba01c_asString_wPredicate() {
88  		var x1 = MID1;
89  		test(x1).asString(x -> "foo").is("foo");
90  	}
91  
92  	@Test void ba02_asJson() {
93  		var x = MID1;
94  		var nil = n(Date.class);
95  		test(x).asJson().isMatches("'2000-*'");
96  		test(nil).asJson().is("null");
97  	}
98  
99  	@Test void ba03_asJsonSorted() {
100 		var x1 = MID1;
101 		var nil = n(Date.class);
102 		test(x1).asJsonSorted().isMatches("'2000-*'");
103 		test(nil).asJsonSorted().is("null");
104 	}
105 
106 	@Test void ba04_apply() {
107 		var x1 = MID1;
108 		var x2 = MID2;
109 		test(x1).asTransformed(x -> x2).is(MID2);
110 	}
111 
112 	@Test void bc04a_asEpochMillis() {
113 		var x = MID1;
114 		var nil = n(Date.class);
115 		test(x).asEpochMillis().is(959862896000L);
116 		test(nil).asEpochMillis().isNull();
117 	}
118 
119 	@Test void bc04b_asEpochSeconds() {
120 		var x = MID1;
121 		var nil = n(Date.class);
122 		test(x).asEpochSeconds().is(959862896L);
123 		test(nil).asEpochSeconds().isNull();
124 	}
125 
126 	//-----------------------------------------------------------------------------------------------------------------
127 	// Test tests
128 	//-----------------------------------------------------------------------------------------------------------------
129 
130 	@Test void ca01_exists() {
131 		var x = MID1;
132 		var nil = n(Date.class);
133 		test(x).isExists().isExists();
134 		assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
135 	}
136 
137 	@Test void ca02_isNull() {
138 		var x = MID1;
139 		var nil = n(Date.class);
140 		test(nil).isNull();
141 		assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
142 	}
143 
144 	@Test void ca03_isNotNull() {
145 		var x = MID1;
146 		var nil = n(Date.class);
147 		test(x).isNotNull();
148 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
149 	}
150 
151 	@Test void ca04a_is_T() {
152 		var x1 = MID1;
153 		var x1a = MID1a;
154 		var x2 = MID2;
155 		var nil = n(Date.class);
156 		test(x1).is(x1);
157 		test(x1).is(x1a);
158 		test(nil).is(nil);
159 		assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().isMatches("Unexpected value.  Expect='*2010'.  Actual='*2000'.");
160 		assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().isMatches("Unexpected value.  Expect='null'.  Actual='*2000'.");
161 		assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().isMatches("Unexpected value.  Expect='*2010'.  Actual='null'.");
162 	}
163 
164 	@Test void ca04b_is_predicate() {
165 		var x1 = MID1;
166 		test(x1).is(x->x!=null);
167 		assertThrown(()->test(x1).is(x->x==null)).asMessage().asOneLine().isMatches("Unexpected value: '*2000'.");
168 		assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().isMatches("Value unexpectedly matched.  Value='*2000'.");
169 	}
170 
171 	@Test void ca05_isNot() {
172 		var x1 = MID1;
173 		var x1a = MID1a;
174 		var x2 = MID2;
175 		var nil = n(Date.class);
176 		test(x1).isNot(x2);
177 		test(x1).isNot(nil);
178 		test(nil).isNot(x1);
179 		assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().isMatches("Unexpected value.  Did not expect='*2000'.  Actual='*2000'.");
180 		assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value.  Did not expect='null'.  Actual='null'.");
181 	}
182 
183 	@Test void ca06_isAny() {
184 		var x1 = MID1;
185 		var x1a = MID1a;
186 		var x2 = MID2;
187 		var nil = n(Date.class);
188 		test(x1).isAny(x1a, x2);
189 		assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().isMatches("Expected value not found.  Expect='[*2010]'.  Actual='*2000'.");
190 		assertThrown(()->test(x1).isAny()).asMessage().asOneLine().isMatches("Expected value not found.  Expect='[]'.  Actual='*2000'.");
191 		assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().isMatches("Expected value not found.  Expect='[*2010]'.  Actual='null'.");
192 	}
193 
194 	@Test void ca07_isNotAny() {
195 		var x1 = MID1;
196 		var x1a = MID1a;
197 		var x2 = MID2;
198 		var nil = n(Date.class);
199 		test(x1).isNotAny(x2);
200 		test(x1).isNotAny();
201 		test(nil).isNotAny(x2);
202 		assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().isMatches("Unexpected value found.  Unexpected='*2000'.  Actual='*2000'.");
203 		assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='null'.  Actual='null'.");
204 	}
205 
206 	@Test void ca08_isSame() {
207 		var x1 = MID1;
208 		var x1a = MID1a;
209 		var nil = n(Date.class);
210 		test(x1).isSame(x1);
211 		test(nil).isSame(nil);
212 		assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='*2000(Date@*)'.  Actual='*2000(Date@*)'.");
213 		assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='*2000(Date@*)'.  Actual='null(null)'.");
214 		assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value.  Expect='null(null)'.  Actual='*2000(Date@*)'.");
215 	}
216 
217 	@Test void ca09_isSameJsonAs() {
218 		var x1 = MID1;
219 		var x1a = MID1a;
220 		var x2 = MID2;
221 		var nil = n(Date.class);
222 		test(x1).isSameJsonAs(x1a);
223 		test(nil).isSameJsonAs(nil);
224 		assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual=''2000*''.");
225 		assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual='null'.");
226 		assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect='null'.  Actual=''2000*''.");
227 	}
228 
229 	@Test void ca10_isSameSortedJsonAs() {
230 		var x1 = MID1;
231 		var x1a = MID1a;
232 		var x2 = MID2;
233 		var nil = n(Date.class);
234 		test(x1).isSameSortedJsonAs(x1a);
235 		test(nil).isSameSortedJsonAs(nil);
236 		assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual=''2000*''.");
237 		assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual='null'.");
238 		assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect='null'.  Actual=''2000*''.");
239 	}
240 
241 	@Test void ca11_isSameSerializedAs() {
242 		var x1 = MID1;
243 		var x1a = MID1a;
244 		var x2 = MID2;
245 		var nil = n(Date.class);
246 		var s = Json5Serializer.DEFAULT;
247 		test(x1).isSameSerializedAs(x1a, s);
248 		test(nil).isSameSerializedAs(nil, s);
249 		assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual=''2000*''.");
250 		assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect=''2010*''.  Actual='null'.");
251 		assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().isMatches("Unexpected comparison.  Expect='null'.  Actual=''2000*''.");
252 	}
253 
254 	@Test void ca12_isType() {
255 		var x = MID1;
256 		var nil = n(Date.class);
257 		test(x).isType(Date.class);
258 		test(x).isType(Object.class);
259 		assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.util.Date'.");
260 		assertThrown(()->test(nil).isType(String.class)).asMessage().asOneLine().is("Value was null.");
261 		assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
262 	}
263 
264 	@Test void ca13_isExactType() {
265 		var x = MID1;
266 		var nil = n(Date.class);
267 		test(x).isExactType(Date.class);
268 		assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.Object'.  Actual='java.util.Date'.");
269 		assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.util.Date'.");
270 		assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
271 		assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
272 	}
273 
274 	@Test void ca14_isString() {
275 		var x = MID1;
276 		var nil = n(Date.class);
277 		test(x).isString(x.toString());
278 		test(nil).isString(null);
279 		assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().isMatches("String differed at position 0.  Expect='bad'.  Actual='*2000'.");
280 		assertThrown(()->test(x).isString(null)).asMessage().asOneLine().isMatches("String differed at position 0.  Expect='null'.  Actual='*2000'.");
281 		assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
282 	}
283 
284 	@Test void ca15_isJson() {
285 		var x = MID1;
286 		var nil = n(Date.class);
287 		test(nil).isJson("null");
288 		assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().isMatches("String differed at position 0.  Expect='bad'.  Actual=''2000*''.");
289 		assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().isMatches("String differed at position 0.  Expect='null'.  Actual=''2000*''.");
290 		assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
291 	}
292 
293 	@Test void cb01_isGt() {
294 		var x1 = MID1;
295 		var x2 = MID2;
296 		var nil = n(Date.class);
297 		test(x2).isGt(x1);
298 		assertThrown(()->test(x1).isGt(x1)).asMessage().asOneLine().isMatches("Value was not greater than expected.  Expect='*2000'.  Actual='*2000'.");
299 		assertThrown(()->test(x1).isGt(x2)).asMessage().asOneLine().isMatches("Value was not greater than expected.  Expect='*2010'.  Actual='*2000'.");
300 		assertThrows(IllegalArgumentException.class, ()->test(x1).isGt(nil), "Argument 'value' cannot be null.");
301 		assertThrows(BasicAssertionError.class, ()->test(nil).isGt(x2), "Value was null.");
302 	}
303 
304 	@Test void cb02_isGte() {
305 		var x1 = MID1;
306 		var x2 = MID2;
307 		var nil = n(Date.class);
308 		test(x2).isGte(x1);
309 		test(x1).isGte(x1);
310 		assertThrown(()->test(x1).isGte(x2)).asMessage().asOneLine().isMatches("Value was not greater than or equals to expected.  Expect='*2010'.  Actual='*2000'.");
311 		assertThrows(IllegalArgumentException.class, ()->test(x1).isGte(nil), "Argument 'value' cannot be null.");
312 		assertThrows(BasicAssertionError.class, ()->test(nil).isGte(x2), "Value was null.");
313 	}
314 
315 	@Test void cb03_isLt() {
316 		var x1 = MID1;
317 		var x2 = MID2;
318 		var nil = n(Date.class);
319 		test(x1).isLt(x2);
320 		assertThrown(()->test(x1).isLt(x1)).asMessage().asOneLine().isMatches("Value was not less than expected.  Expect='*2000'.  Actual='*2000'.");
321 		assertThrown(()->test(x2).isLt(x1)).asMessage().asOneLine().isMatches("Value was not less than expected.  Expect='*2000'.  Actual='*2010'.");
322 		assertThrows(IllegalArgumentException.class, ()->test(x2).isLt(nil), "Argument 'value' cannot be null.");
323 		assertThrows(BasicAssertionError.class, ()->test(nil).isLt(x1), "Value was null.");
324 	}
325 
326 	@Test void cb04_isLte() {
327 		var x1 = MID1;
328 		var x2 = MID2;
329 		var nil = n(Date.class);
330 		test(x1).isLte(x2);
331 		test(x1).isLte(x1);
332 		assertThrown(()->test(x2).isLte(x1)).asMessage().asOneLine().isMatches("Value was not less than or equals to expected.  Expect='*2000'.  Actual='*2010'.");
333 		assertThrows(IllegalArgumentException.class, ()->test(x2).isLte(nil), "Argument 'value' cannot be null.");
334 		assertThrows(BasicAssertionError.class, ()->test(nil).isLte(x1), "Value was null.");
335 	}
336 
337 	@Test void cb05_isBetween() {
338 		var x1 = MIN;
339 		var x2 = MID1;
340 		var x3 = MID2;
341 		var x4 = MAX;
342 		var nil = n(Date.class);
343 		test(x1).isBetween(x1, x3);
344 		test(x2).isBetween(x1, x3);
345 		test(x3).isBetween(x1, x3);
346 		assertThrown(()->test(x4).isBetween(x1, x3)).asMessage().asOneLine().isMatches("Value was not less than or equals to expected.  Expect='*2010'.  Actual='*2100'.");
347 		assertThrows(BasicAssertionError.class, ()->test(nil).isBetween(x1, x3), "Value was null.");
348 		assertThrows(IllegalArgumentException.class, ()->test(x1).isBetween(nil, x3), "Argument 'lower' cannot be null.");
349 		assertThrown(()->test(x1).isBetween(x1, nil)).asMessage().asOneLine().is("Argument 'upper' cannot be null.");
350 	}
351 
352 	@Test void cc01_is_wChrono() {
353 		var x1 = MID1;
354 		var x1a = MID1a;
355 		var x2 = MIN;
356 		var nil = n(Date.class);
357 		test(x1).is(x1, ChronoUnit.DAYS);
358 		test(x1).is(x1a, ChronoUnit.DAYS);
359 		assertThrown(()->test(nil).is(nil, ChronoUnit.DAYS)).asMessage().isContains("Value was null.");
360 		assertThrown(()->test(x1).is(x2, ChronoUnit.DAYS)).asMessage().isContains("Unexpected value.");
361 		assertThrown(()->test(x1).is(nil, ChronoUnit.DAYS)).asMessage().isContains("Unexpected value.");
362 	}
363 
364 	@Test void cc02_isAfter() {
365 		var x1 = MIN;
366 		var x2 = MID1;
367 		var x3 = MAX;
368 		var nil = n(Date.class);
369 		test(x3).isAfter(x2);
370 		assertThrows(IllegalArgumentException.class, ()->test(x1).isAfter(nil), "Argument 'value' cannot be null.");
371 		assertThrown(()->test(x1).isAfter(x2)).asMessage().isContains("Value was not after expected.");
372 		assertThrows(BasicAssertionError.class, ()->test(nil).isAfter(x2), "Value was null.");
373 	}
374 
375 	@Test void cc03_isAfterNow() {
376 		var x1 = MIN;
377 		var x2 = MAX;
378 		var nil = n(Date.class);
379 		test(x2).isAfterNow();
380 		assertThrown(()->test(x1).isAfterNow()).asMessage().isContains("Value was not after expected.");
381 		assertThrown(()->test(nil).isAfterNow()).asMessage().isContains("Value was null.");
382 	}
383 
384 	@Test void cc04_isBefore() {
385 		var x1 = MIN;
386 		var x2 = MID1;
387 		var nil = n(Date.class);
388 		test(x1).isBefore(x2);
389 		assertThrows(IllegalArgumentException.class, ()->test(x1).isBefore(nil), "Argument 'value' cannot be null.");
390 		assertThrown(()->test(x2).isBefore(x1)).asMessage().isContains("Value was not before expected.");
391 		assertThrows(BasicAssertionError.class, ()->test(nil).isBefore(x1), "Value was null.");
392 	}
393 
394 	@Test void cc05_isBeforeNow() {
395 		var x1 = MIN;
396 		var x2 = MAX;
397 		var nil = n(Date.class);
398 		test(x1).isBeforeNow();
399 		assertThrown(()->test(x2).isBeforeNow()).asMessage().isContains("Value was not before expected.");
400 		assertThrown(()->test(nil).isBeforeNow()).asMessage().isContains("Value was null.");
401 	}
402 }