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.junit.jupiter.api.Assertions.*;
20  
21  import org.apache.juneau.testutils.pojos.*;
22  import org.junit.jupiter.params.*;
23  import org.junit.jupiter.params.provider.*;
24  
25  /**
26   * Tests designed to serialize and parse objects to make sure we end up
27   * with the same objects for all serializers and parsers.
28   */
29  class PrimitiveObjectBeans_RoundTripTest extends RoundTripTest_Base {
30  
31  	//====================================================================================================
32  	// testPrimitiveObjectsBean
33  	//====================================================================================================
34  
35  	@ParameterizedTest
36  	@MethodSource("testers")
37  	void a01_primitiveObjectsBean(RoundTrip_Tester t) throws Exception {
38  		var x = PrimitiveObjectsBean.get();
39  		x = t.roundTrip(x, PrimitiveObjectsBean.class);
40  		x = t.roundTrip(x, PrimitiveObjectsBean.class);
41  
42  		// primitives
43  		assertEquals(Boolean.valueOf(true), x.poBoolean);
44  		assertEquals(Byte.valueOf((byte)1), x.poByte);
45  		assertEquals(Character.valueOf('a'), x.poChar);
46  		assertEquals(Short.valueOf("2"), x.poShort);
47  		assertEquals(Integer.valueOf(3), x.poInt);
48  		assertEquals(Long.valueOf(4), x.poLong);
49  		assertEquals(Float.valueOf(5), x.poFloat);
50  		assertEquals(Double.valueOf(6), x.poDouble);
51  		assertEquals(Integer.valueOf(7), x.poNumber);
52  		assertEquals(8, x.poBigInteger.intValue());
53  		assertEquals(9f, x.poBigDecimal.floatValue(), 0.1f);
54  
55  		// uninitialized primitives
56  		assertNull(x.pouBoolean);
57  		assertNull(x.pouByte);
58  		assertNull(x.pouChar);
59  		assertNull(x.pouShort);
60  		assertNull(x.pouInt);
61  		assertNull(x.pouLong);
62  		assertNull(x.pouFloat);
63  		assertNull(x.pouDouble);
64  		assertNull(x.pouNumber);
65  		assertNull(x.pouBigInteger);
66  		assertNull(x.pouBigDecimal);
67  
68  		// primitive arrays
69  		assertEquals(Boolean.valueOf(false), x.poaBoolean[1][0]);
70  		assertEquals(Byte.valueOf((byte)2), x.poaByte[1][0]);
71  		assertEquals(Character.valueOf('b'), x.poaChar[1][0]);
72  		assertEquals(Short.valueOf("2"), x.poaShort[1][0]);
73  		assertEquals(Integer.valueOf(2), x.poaInt[1][0]);
74  		assertEquals(Long.valueOf(2), x.poaLong[1][0]);
75  		assertEquals(Float.valueOf(2), x.poaFloat[1][0]);
76  		assertEquals(Double.valueOf(2), x.poaDouble[1][0]);
77  		assertEquals(Integer.valueOf(2), x.poaNumber[1][0]);
78  		assertEquals(2, x.poaBigInteger[1][0].intValue());
79  		assertEquals(2, x.poaBigDecimal[1][0].intValue());
80  		assertNull(x.poaBoolean[2]);
81  		assertNull(x.poaByte[2]);
82  		assertNull(x.poaChar[2]);
83  		assertNull(x.poaShort[2]);
84  		assertNull(x.poaInt[2]);
85  		assertNull(x.poaLong[2]);
86  		assertNull(x.poaFloat[2]);
87  		assertNull(x.poaDouble[2]);
88  		assertNull(x.poaNumber[2]);
89  		assertNull(x.poaBigInteger[2]);
90  		assertNull(x.poaBigDecimal[2]);
91  
92  		// uninitialized primitive arrays
93  		assertNull(x.poauBoolean);
94  		assertNull(x.poauByte);
95  		assertNull(x.poauChar);
96  		assertNull(x.poauShort);
97  		assertNull(x.poauInt);
98  		assertNull(x.poauLong);
99  		assertNull(x.poauFloat);
100 		assertNull(x.poauDouble);
101 		assertNull(x.poauNumber);
102 		assertNull(x.poauBigInteger);
103 		assertNull(x.poauBigDecimal);
104 
105 		// anonymous list of object primitive arrays
106 		assertEquals(Boolean.valueOf(true), x.poalBoolean.get(0)[0]);
107 		assertEquals(Byte.valueOf((byte)1), x.poalByte.get(0)[0]);
108 		assertEquals(Character.valueOf('a'), x.poalChar.get(0)[0]);
109 		assertEquals(Short.valueOf((short)1), x.poalShort.get(0)[0]);
110 		assertEquals(Integer.valueOf(1), x.poalInt.get(0)[0]);
111 		assertEquals(Long.valueOf(1L), x.poalLong.get(0)[0]);
112 		assertEquals(Float.valueOf(1f), x.poalFloat.get(0)[0]);
113 		assertEquals(Double.valueOf(1d), x.poalDouble.get(0)[0]);
114 		assertEquals(1, x.poalBigInteger.get(0)[0].intValue());
115 		assertEquals(1, x.poalBigDecimal.get(0)[0].intValue());
116 		assertNull(x.poalBoolean.get(1));
117 		assertNull(x.poalByte.get(1));
118 		assertNull(x.poalChar.get(1));
119 		assertNull(x.poalShort.get(1));
120 		assertNull(x.poalInt.get(1));
121 		assertNull(x.poalLong.get(1));
122 		assertNull(x.poalFloat.get(1));
123 		assertNull(x.poalDouble.get(1));
124 		assertNull(x.poalNumber.get(1));
125 		assertNull(x.poalBigInteger.get(1));
126 		assertNull(x.poalBigDecimal.get(1));
127 
128 		// regular list of object primitive arrays
129 		assertEquals(Boolean.valueOf(true), x.polBoolean.get(0)[0]);
130 		assertEquals(Byte.valueOf((byte)1), x.polByte.get(0)[0]);
131 		assertEquals(Character.valueOf('a'), x.polChar.get(0)[0]);
132 		assertEquals(Short.valueOf((short)1), x.polShort.get(0)[0]);
133 		assertEquals(Integer.valueOf(1), x.polInt.get(0)[0]);
134 		assertEquals(Long.valueOf(1L), x.polLong.get(0)[0]);
135 		assertEquals(Float.valueOf(1f), x.polFloat.get(0)[0]);
136 		assertEquals(Double.valueOf(1d), x.polDouble.get(0)[0]);
137 		assertEquals(1, x.polBigInteger.get(0)[0].intValue());
138 		assertEquals(1, x.polBigDecimal.get(0)[0].intValue());
139 		assertNull(x.polBoolean.get(1));
140 		assertNull(x.polByte.get(1));
141 		assertNull(x.polChar.get(1));
142 		assertNull(x.polShort.get(1));
143 		assertNull(x.polInt.get(1));
144 		assertNull(x.polLong.get(1));
145 		assertNull(x.polFloat.get(1));
146 		assertNull(x.polDouble.get(1));
147 		assertNull(x.polNumber.get(1));
148 		assertNull(x.polBigInteger.get(1));
149 		assertNull(x.polBigDecimal.get(1));
150 	}
151 
152 	//====================================================================================================
153 	// testPrimitiveAtomicObjectsBean
154 	//====================================================================================================
155 
156 	@ParameterizedTest
157 	@MethodSource("testers")
158 	void a02_primitiveAtomicObjectsBean(RoundTrip_Tester t) throws Exception {
159 
160 		var x = PrimitiveAtomicObjectsBean.get();
161 		x = t.roundTrip(x, PrimitiveAtomicObjectsBean.class);
162 		x = t.roundTrip(x, PrimitiveAtomicObjectsBean.class);
163 
164 		// primitives
165 		assertEquals(1, x.poAtomicInteger.intValue());
166 		assertEquals(2, x.poAtomicLong.intValue());
167 
168 		// uninitialized primitives
169 		assertNull(x.pouAtomicInteger);
170 		assertNull(x.pouAtomicLong);
171 
172 		// primitive arrays
173 		assertEquals(2, x.poaAtomicInteger[1][0].intValue());
174 		assertEquals(2, x.poaAtomicLong[1][0].intValue());
175 		assertNull(x.poaAtomicInteger[2]);
176 		assertNull(x.poaAtomicLong[2]);
177 
178 		// uninitialized primitive arrays
179 		assertNull(x.poauAtomicInteger);
180 		assertNull(x.poauAtomicLong);
181 
182 		// anonymous list of object primitive arrays
183 		assertEquals(1, x.poalAtomicInteger.get(0)[0].intValue());
184 		assertEquals(1, x.poalAtomicLong.get(0)[0].intValue());
185 		assertNull(x.poalAtomicInteger.get(1));
186 		assertNull(x.poalAtomicLong.get(1));
187 
188 		// regular list of object primitive arrays
189 		assertEquals(1, x.polAtomicInteger.get(0)[0].intValue());
190 		assertEquals(1, x.polAtomicLong.get(0)[0].intValue());
191 		assertNull(x.polAtomicInteger.get(1));
192 		assertNull(x.polAtomicLong.get(1));
193 	}
194 }