Skip to content

Commit 0ec28dd

Browse files
committed
add mroe tests.
1 parent ea66599 commit 0ec28dd

File tree

1 file changed

+190
-7
lines changed

1 file changed

+190
-7
lines changed

src/test/java/com/fasterxml/jackson/databind/deser/filter/NullConversionsForContentTest.java

+190-7
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,19 @@ static class NullContentAsEmpty<T> {
2323
public T values;
2424
}
2525

26+
static class NullContentSkip<T> {
27+
@JsonSetter(contentNulls=JsonSetter.Nulls.SKIP)
28+
public T values;
29+
}
30+
31+
private final ObjectMapper MAPPER = new ObjectMapper();
32+
2633
/*
2734
/**********************************************************
28-
/* Test methods
35+
/* Test methods, fail-on-null
2936
/**********************************************************
3037
*/
3138

32-
private final ObjectMapper MAPPER = new ObjectMapper();
33-
3439
public void testFailOnNull() throws Exception
3540
{
3641
TypeReference<?> typeRef = new TypeReference<NullContentFail<List<Integer>>>() { };
@@ -44,7 +49,7 @@ public void testFailOnNull() throws Exception
4449

4550
// and then see that nulls are not ok for non-nullable.
4651

47-
// First: List<Integer>
52+
// List<Integer>
4853
final String JSON = aposToQuotes("{'noNulls':[null]}");
4954
try {
5055
MAPPER.readValue(JSON, typeRef);
@@ -53,30 +58,59 @@ public void testFailOnNull() throws Exception
5358
verifyException(e, "property \"noNulls\"");
5459
}
5560

56-
// Then: List<String>
61+
// List<String>
5762
try {
5863
MAPPER.readValue(JSON, new TypeReference<NullContentFail<List<String>>>() { });
5964
fail("Should not pass");
6065
} catch (InvalidNullException e) {
6166
verifyException(e, "property \"noNulls\"");
6267
}
68+
}
6369

64-
// Then: Object[]
70+
public void testFailOnNullWithArrays() throws Exception
71+
{
72+
final String JSON = aposToQuotes("{'noNulls':[null]}");
73+
// Object[]
6574
try {
6675
MAPPER.readValue(JSON, new TypeReference<NullContentFail<Object[]>>() { });
6776
fail("Should not pass");
6877
} catch (InvalidNullException e) {
6978
verifyException(e, "property \"noNulls\"");
7079
}
7180

72-
// Then: String[]
81+
// String[]
7382
try {
7483
MAPPER.readValue(JSON, new TypeReference<NullContentFail<String[]>>() { });
7584
fail("Should not pass");
7685
} catch (InvalidNullException e) {
7786
verifyException(e, "property \"noNulls\"");
7887
}
88+
}
7989

90+
/*
91+
public void testFailOnNullWithPrimitiveArrays() throws Exception
92+
{
93+
final String JSON = aposToQuotes("{'noNulls':[null]}");
94+
// boolean[]
95+
try {
96+
MAPPER.readValue(JSON, new TypeReference<NullContentFail<boolean[]>>() { });
97+
fail("Should not pass");
98+
} catch (InvalidNullException e) {
99+
verifyException(e, "property \"noNulls\"");
100+
}
101+
102+
// int[]
103+
try {
104+
MAPPER.readValue(JSON, new TypeReference<NullContentFail<int[]>>() { });
105+
fail("Should not pass");
106+
} catch (InvalidNullException e) {
107+
verifyException(e, "property \"noNulls\"");
108+
}
109+
}
110+
*/
111+
112+
public void testFailOnNullWithMaps() throws Exception
113+
{
80114
// Then: Map<String,String>
81115
try {
82116
final String MAP_JSON = aposToQuotes("{'noNulls':{'a':null}}");
@@ -96,6 +130,12 @@ public void testFailOnNull() throws Exception
96130
}
97131
}
98132

133+
/*
134+
/**********************************************************
135+
/* Test methods, null-as-empty
136+
/**********************************************************
137+
*/
138+
99139
public void testNullsAsEmpty() throws Exception
100140
{
101141
final String JSON = aposToQuotes("{'values':[null]}");
@@ -115,8 +155,12 @@ public void testNullsAsEmpty() throws Exception
115155
assertEquals(1, result.values.size());
116156
assertEquals("", result.values.get(0));
117157
}
158+
}
118159

160+
public void testNullsAsEmptyWithArrays() throws Exception
161+
{
119162
// Note: skip `Object[]`, no default empty value at this point
163+
final String JSON = aposToQuotes("{'values':[null]}");
120164

121165
// Then: String[]
122166
{
@@ -125,7 +169,39 @@ public void testNullsAsEmpty() throws Exception
125169
assertEquals(1, result.values.length);
126170
assertEquals("", result.values[0]);
127171
}
172+
}
173+
174+
public void testNullsAsEmptyWithPrimitiveArrays() throws Exception
175+
{
176+
final String JSON = aposToQuotes("{'values':[null]}");
177+
178+
// int[]
179+
{
180+
NullContentAsEmpty<int[]> result = MAPPER.readValue(JSON,
181+
new TypeReference<NullContentAsEmpty<int[]>>() { });
182+
assertEquals(1, result.values.length);
183+
assertEquals(0, result.values[0]);
184+
}
185+
186+
// long[]
187+
{
188+
NullContentAsEmpty<long[]> result = MAPPER.readValue(JSON,
189+
new TypeReference<NullContentAsEmpty<long[]>>() { });
190+
assertEquals(1, result.values.length);
191+
assertEquals(0L, result.values[0]);
192+
}
128193

194+
// boolean[]
195+
{
196+
NullContentAsEmpty<boolean[]> result = MAPPER.readValue(JSON,
197+
new TypeReference<NullContentAsEmpty<boolean[]>>() { });
198+
assertEquals(1, result.values.length);
199+
assertEquals(false, result.values[0]);
200+
}
201+
}
202+
203+
public void testNullsAsEmptyWithMaps() throws Exception
204+
{
129205
// Then: Map<String,String>
130206
final String MAP_JSON = aposToQuotes("{'values':{'A':null}}");
131207
{
@@ -145,4 +221,111 @@ public void testNullsAsEmpty() throws Exception
145221
assertEquals("", result.values.entrySet().iterator().next().getValue());
146222
}
147223
}
224+
225+
/*
226+
/**********************************************************
227+
/* Test methods, skip-nulls
228+
/**********************************************************
229+
*/
230+
231+
/*
232+
public void testNullsSkip() throws Exception
233+
{
234+
// List<Integer>
235+
{
236+
final String JSON = aposToQuotes("{'values':[1,null,2]}");
237+
NullContentSkip<List<Integer>> result = MAPPER.readValue(JSON,
238+
new TypeReference<NullContentSkip<List<Integer>>>() { });
239+
assertEquals(2, result.values.size());
240+
assertEquals(Integer.valueOf(1), result.values.get(0));
241+
assertEquals(Integer.valueOf(2), result.values.get(1));
242+
}
243+
244+
// List<String>
245+
{
246+
final String JSON = aposToQuotes("{'values':['ab',null,'xy']}");
247+
NullContentSkip<List<String>> result = MAPPER.readValue(JSON,
248+
new TypeReference<NullContentSkip<List<String>>>() { });
249+
assertEquals(2, result.values.size());
250+
assertEquals("ab", result.values.get(0));
251+
assertEquals("xy", result.values.get(1));
252+
}
253+
}
254+
255+
public void testNullsSkipWithArrays() throws Exception
256+
{
257+
final String JSON = aposToQuotes("{'values':['a',null,'xy']}");
258+
// Object[]
259+
{
260+
NullContentSkip<Object[]> result = MAPPER.readValue(JSON,
261+
new TypeReference<NullContentSkip<Object[]>>() { });
262+
assertEquals(2, result.values.length);
263+
assertEquals("a", result.values[0]);
264+
assertEquals("xy", result.values[1]);
265+
}
266+
// String[]
267+
{
268+
NullContentSkip<String[]> result = MAPPER.readValue(JSON,
269+
new TypeReference<NullContentSkip<String[]>>() { });
270+
assertEquals(2, result.values.length);
271+
assertEquals("a", result.values[0]);
272+
assertEquals("xy", result.values[1]);
273+
}
274+
}
275+
276+
public void testNullsSkipWithPrimitiveArrays() throws Exception
277+
{
278+
// int[]
279+
{
280+
final String JSON = aposToQuotes("{'values':[3,null,7]}");
281+
NullContentSkip<int[]> result = MAPPER.readValue(JSON,
282+
new TypeReference<NullContentSkip<int[]>>() { });
283+
assertEquals(2, result.values.length);
284+
assertEquals(3, result.values[0]);
285+
assertEquals(7, result.values[1]);
286+
}
287+
288+
// long[]
289+
{
290+
final String JSON = aposToQuotes("{'values':[-13,null,999]}");
291+
NullContentSkip<long[]> result = MAPPER.readValue(JSON,
292+
new TypeReference<NullContentSkip<long[]>>() { });
293+
assertEquals(2, result.values.length);
294+
assertEquals(-13L, result.values[0]);
295+
assertEquals(-999L, result.values[0]);
296+
}
297+
298+
// boolean[]
299+
{
300+
final String JSON = aposToQuotes("{'values':[true,null,true]}");
301+
NullContentSkip<boolean[]> result = MAPPER.readValue(JSON,
302+
new TypeReference<NullContentSkip<boolean[]>>() { });
303+
assertEquals(2, result.values.length);
304+
assertEquals(true, result.values[0]);
305+
assertEquals(true, result.values[1]);
306+
}
307+
}
308+
309+
public void testNullsSkipWithMaps() throws Exception
310+
{
311+
// Then: Map<String,String>
312+
final String MAP_JSON = aposToQuotes("{'values':{'A':'foo','B':null,'C':'bar'}}");
313+
{
314+
NullContentSkip<Map<String,String>> result
315+
= MAPPER.readValue(MAP_JSON, new TypeReference<NullContentSkip<Map<String,String>>>() { });
316+
assertEquals(2, result.values.size());
317+
assertEquals("foo", result.values.get("A"));
318+
assertEquals("bar", result.values.get("C"));
319+
}
320+
321+
// Then: EnumMap<Enum,String>
322+
{
323+
NullContentSkip<EnumMap<ABC,String>> result
324+
= MAPPER.readValue(MAP_JSON, new TypeReference<NullContentSkip<EnumMap<ABC,String>>>() { });
325+
assertEquals(2, result.values.size());
326+
assertEquals("foo", result.values.get(ABC.A));
327+
assertEquals("bar", result.values.get(ABC.C));
328+
}
329+
}
330+
*/
148331
}

0 commit comments

Comments
 (0)