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