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