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.a.rttests;
18  
19  import static org.apache.juneau.commons.utils.CollectionUtils.*;
20  import static org.apache.juneau.junit.bct.BctAssertions.*;
21  
22  import java.util.*;
23  
24  import org.apache.juneau.*;
25  import org.apache.juneau.collections.*;
26  import org.junit.jupiter.params.*;
27  import org.junit.jupiter.params.provider.*;
28  
29  /**
30   * Tests designed to serialize and parse objects to make sure we end up
31   * with the same objects for all serializers and parsers.
32   */
33  class JsonMaps_RoundTripTest extends RoundTripTest_Base {
34  
35  	//====================================================================================================
36  	// Class with X(JsonMap) constructor and toJsonMap() method.
37  	//====================================================================================================
38  
39  	@ParameterizedTest
40  	@MethodSource("testers")
41  	void a01_basic(RoundTrip_Tester t) throws Exception {
42  		var x1 = new A(JsonMap.ofJson("{f1:'a',f2:2}"));
43  		x1 = t.roundTrip(x1, A.class);
44  		assertBean(x1, "f1,f2", "a,2");
45  
46  		var x2 = a(x1);
47  		x2 = t.roundTrip(x2, A[].class);
48  		assertBean(x2, "length,#{f1,f2}", "1,[{a,2}]");
49  
50  		var x3 = l(new A(JsonMap.ofJson("{f1:'a',f2:2}")));
51  		x3 = t.roundTrip(x3, List.class, A.class);
52  		assertBean(x3, "size,0{f1,f2}", "1,{a,2}");
53  
54  		var x4 = m("a",new A(JsonMap.ofJson("{f1:'a',f2:2}")));
55  		x4 = t.roundTrip(x4, Map.class, String.class, A.class);
56  		assertBean(x4, "size,a{f1,f2}", "1,{a,2}");
57  	}
58  
59  	public static class A {
60  		private String f1;
61  		private int f2;
62  		public A(JsonMap m) {
63  			this.f1 = m.getString("f1");
64  			this.f2 = m.getInt("f2");
65  		}
66  		public JsonMap swap(BeanSession session) {
67  			return JsonMap.of("f1",f1,"f2",f2);
68  		}
69  	}
70  }