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.contains;
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.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 ObjectAssertion_Test extends TestBase {
33  
34  	//------------------------------------------------------------------------------------------------------------------
35  	// Helpers
36  	//------------------------------------------------------------------------------------------------------------------
37  
38  	private <T> ObjectAssertion<T> test(T value) {
39  		return assertObject(value).setSilent();
40  	}
41  
42  	public static final A1 A1 = new A1();
43  	public static class A1 {
44  		public int a = 1, b = 2;
45  		@Override public String toString() { return "a="+a+",b="+b; }
46  	}
47  
48  	public static class A2 {
49  		public int getFoo() { throw new RuntimeException("foo"); }
50  	}
51  
52  	//-----------------------------------------------------------------------------------------------------------------
53  	// Basic tests
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  	// Transform tests
67  	//-----------------------------------------------------------------------------------------------------------------
68  
69  	@Test void ba01a_asString() {
70  		var x = 1;
71  		var nil = n(Integer.class);
72  		test(x).asString().is("1");
73  		test(nil).asString().isNull();
74  	}
75  
76  	@Test void ba01b_asString_wSerializer() {
77  		var x = 1;
78  		var nil = n(Integer.class);
79  		var s = Json5Serializer.DEFAULT;
80  		test(x).asString(s).is("1");
81  		test(nil).asString(s).is("null");
82  	}
83  
84  	@Test void ba01c_asString_wPredicate() {
85  		var x1 = 1;
86  		test(x1).asString(x -> "foo").is("foo");
87  	}
88  
89  	@Test void ba02_asJson() {
90  		var x = 1;
91  		var nil = n(Integer.class);
92  		test(x).asJson().is("1");
93  		test(nil).asJson().is("null");
94  		assertThrown(()->test(new A2()).asJson()).asMessages().isAny(contains("Could not call getValue() on property 'foo'"));
95  	}
96  
97  	@Test void ba03_asJsonSorted() {
98  		var x1 = a(2,1);
99  		var nil = na(Integer.class);
100 		var x2 = A1;
101 		test(x1).asJsonSorted().is("[1,2]");
102 		test(x2).asJsonSorted().is("{a:1,b:2}");
103 		test(nil).asJsonSorted().is("null");
104 	}
105 
106 	@Test void ba04_apply() {
107 		var x1 = 1;
108 		test(x1).asTransformed(x -> x + 1).is(2);
109 	}
110 
111 	@Test void ba05_asAny() {
112 		var x = 1;
113 		var nil = n(Integer.class);
114 		test(x).asAny().asInteger().is(1);
115 		test(nil).asAny().isNull();
116 	}
117 
118 	//-----------------------------------------------------------------------------------------------------------------
119 	// Test tests
120 	//-----------------------------------------------------------------------------------------------------------------
121 
122 	@Test void ca01_exists() {
123 		var x = 1;
124 		var nil = n(Integer.class);
125 		test(x).isExists().isExists();
126 		assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
127 	}
128 
129 	@Test void ca02_isNull() {
130 		var x = 1;
131 		var nil = n(Integer.class);
132 		test(nil).isNull();
133 		assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
134 	}
135 
136 	@Test void ca03_isNotNull() {
137 		var x = 1;
138 		var nil = n(Integer.class);
139 		test(x).isNotNull();
140 		assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
141 	}
142 
143 	@Test void ca04a_is_T() {
144 		var x1 = 1;
145 		var x1a = 1;
146 		var x2 = 2;
147 		var nil = n(Integer.class);
148 		test(x1).is(x1);
149 		test(x1).is(x1a);
150 		test(nil).is(nil);
151 		assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='2'.  Actual='1'.");
152 		assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value.  Expect='null'.  Actual='1'.");
153 		assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("Unexpected value.  Expect='2'.  Actual='null'.");
154 	}
155 
156 	@Test void ca04b_is_predicate() {
157 		var x1 = 1;
158 		test(x1).is(x->x==1);
159 		test(x1).is((Predicate<Integer>)null);
160 		assertThrown(()->test(x1).is(x->x==2)).asMessage().asOneLine().is("Unexpected value: '1'.");
161 		assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched.  Value='1'.");
162 	}
163 
164 	@Test void ca05_isNot() {
165 		var x1 = 1;
166 		var x1a = 1;
167 		var x2 = 2;
168 		var nil = n(Integer.class);
169 		test(x1).isNot(x2);
170 		test(x1).isNot(nil);
171 		test(nil).isNot(x1);
172 		assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value.  Did not expect='1'.  Actual='1'.");
173 		assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value.  Did not expect='null'.  Actual='null'.");
174 	}
175 
176 	@Test void ca06_isAny() {
177 		var x1 = 1;
178 		var x1a = 1;
179 		var x2 = 2;
180 		var nil = n(Integer.class);
181 		test(x1).isAny(x1a, x2);
182 		assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[2]'.  Actual='1'.");
183 		assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found.  Expect='[]'.  Actual='1'.");
184 		assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found.  Expect='[2]'.  Actual='null'.");
185 	}
186 
187 	@Test void ca07_isNotAny() {
188 		var x1 = 1;
189 		var x1a = 1;
190 		var x2 = 2;
191 		var nil = n(Integer.class);
192 		test(x1).isNotAny(x2);
193 		test(x1).isNotAny();
194 		test(nil).isNotAny(x2);
195 		assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='1'.  Actual='1'.");
196 		assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found.  Unexpected='null'.  Actual='null'.");
197 	}
198 
199 	@Test void ca08_isSame() {
200 		var x1 = Integer.valueOf(999);
201 		var x1a = Integer.valueOf(999);
202 		var nil = n(Integer.class);
203 		test(x1).isSame(x1);
204 		test(nil).isSame(nil);
205 		assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='999(Integer@*)'.  Actual='999(Integer@*)'.");
206 		assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value.  Expect='999(Integer@*)'.  Actual='null(null)'.");
207 		assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value.  Expect='null(null)'.  Actual='999(Integer@*)'.");
208 	}
209 
210 	@Test void ca09_isSameJsonAs() {
211 		var x1 = 1;
212 		var x1a = 1;
213 		var x2 = 2;
214 		var nil = n(Integer.class);
215 		test(x1).isSameJsonAs(x1a);
216 		test(nil).isSameJsonAs(nil);
217 		assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
218 		assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
219 		assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
220 	}
221 
222 	@Test void ca10_isSameSortedJsonAs() {
223 		var x1 = 1;
224 		var x1a = 1;
225 		var x2 = 2;
226 		var nil = n(Integer.class);
227 		test(x1).isSameSortedJsonAs(x1a);
228 		test(nil).isSameSortedJsonAs(nil);
229 		assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
230 		assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
231 		assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
232 	}
233 
234 	@Test void ca11_isSameSerializedAs() {
235 		var x1 = 1;
236 		var x1a = 1;
237 		var x2 = 2;
238 		var nil = n(Integer.class);
239 		var s = Json5Serializer.DEFAULT;
240 		test(x1).isSameSerializedAs(x1a, s);
241 		test(nil).isSameSerializedAs(nil, s);
242 		assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='1'.");
243 		assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='2'.  Actual='null'.");
244 		assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison.  Expect='null'.  Actual='1'.");
245 	}
246 
247 	@Test void ca12_isType() {
248 		var x = 1;
249 		var nil = n(Integer.class);
250 		test(x).isType(Integer.class);
251 		test(x).isType(Object.class);
252 		assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.lang.Integer'.");
253 		assertThrown(()->test(nil).isType(String.class)).asMessage().asOneLine().is("Value was null.");
254 		assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
255 	}
256 
257 	@Test void ca13_isExactType() {
258 		var x = 1;
259 		var nil = n(Integer.class);
260 		test(x).isExactType(Integer.class);
261 		assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.Object'.  Actual='java.lang.Integer'.");
262 		assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type.  Expect='java.lang.String'.  Actual='java.lang.Integer'.");
263 		assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
264 		assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
265 	}
266 
267 	@Test void ca14_isString() {
268 		var x = 1;
269 		var nil = n(Integer.class);
270 		test(x).isString("1");
271 		test(nil).isString(null);
272 		assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='1'.");
273 		assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='1'.");
274 		assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
275 	}
276 
277 	@Test void ca15_isJson() {
278 		var x = 1;
279 		var nil = n(Integer.class);
280 		test(x).isJson("1");
281 		test(nil).isJson("null");
282 		assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='1'.");
283 		assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0.  Expect='null'.  Actual='1'.");
284 		assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0.  Expect='bad'.  Actual='null'.");
285 	}
286 }