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