• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.annotation;
2 
3 public class JsonSetterTest extends TestBase
4 {
5     private final static class Bogus {
6         @JsonSetter(nulls=Nulls.FAIL, contentNulls=Nulls.SKIP)
7         public int field;
8     }
9 
10     private final JsonSetter.Value EMPTY = JsonSetter.Value.empty();
11 
testEmpty()12     public void testEmpty()
13     {
14         assertEquals(Nulls.DEFAULT, EMPTY.getValueNulls());
15         assertEquals(Nulls.DEFAULT, EMPTY.getContentNulls());
16 
17         assertEquals(JsonSetter.class, EMPTY.valueFor());
18 
19         assertNull(EMPTY.nonDefaultValueNulls());
20         assertNull(EMPTY.nonDefaultContentNulls());
21     }
22 
testStdMethods()23     public void testStdMethods() {
24         assertEquals("JsonSetter.Value(valueNulls=DEFAULT,contentNulls=DEFAULT)",
25                 EMPTY.toString());
26         int x = EMPTY.hashCode();
27         if (x == 0) { // no fixed value, but should not evalute to 0
28             fail();
29         }
30         assertEquals(EMPTY, EMPTY);
31         assertFalse(EMPTY.equals(null));
32         assertFalse(EMPTY.equals("xyz"));
33     }
34 
testFromAnnotation()35     public void testFromAnnotation() throws Exception
36     {
37         assertSame(EMPTY, JsonSetter.Value.from(null)); // legal
38 
39         JsonSetter ann = Bogus.class.getField("field").getAnnotation(JsonSetter.class);
40         JsonSetter.Value v = JsonSetter.Value.from(ann);
41         assertEquals(Nulls.FAIL, v.getValueNulls());
42         assertEquals(Nulls.SKIP, v.getContentNulls());
43     }
44 
testConstruct()45     public void testConstruct() throws Exception
46     {
47         JsonSetter.Value v = JsonSetter.Value.construct(null, null);
48         assertSame(EMPTY, v);
49     }
50 
testFactories()51     public void testFactories() throws Exception
52     {
53         JsonSetter.Value v = JsonSetter.Value.forContentNulls(Nulls.SET);
54         assertEquals(Nulls.DEFAULT, v.getValueNulls());
55         assertEquals(Nulls.SET, v.getContentNulls());
56         assertEquals(Nulls.SET, v.nonDefaultContentNulls());
57 
58         JsonSetter.Value skip = JsonSetter.Value.forValueNulls(Nulls.SKIP);
59         assertEquals(Nulls.SKIP, skip.getValueNulls());
60         assertEquals(Nulls.DEFAULT, skip.getContentNulls());
61         assertEquals(Nulls.SKIP, skip.nonDefaultValueNulls());
62     }
63 
testSimpleMerge()64     public void testSimpleMerge()
65     {
66         JsonSetter.Value v = EMPTY.withContentNulls(Nulls.SKIP);
67         assertEquals(Nulls.SKIP, v.getContentNulls());
68         v = v.withValueNulls(Nulls.FAIL);
69         assertEquals(Nulls.FAIL, v.getValueNulls());
70     }
71 
testWithMethods()72     public void testWithMethods()
73     {
74         JsonSetter.Value v = EMPTY.withContentNulls(null);
75         assertSame(EMPTY, v);
76         v = v.withContentNulls(Nulls.FAIL);
77         assertEquals(Nulls.FAIL, v.getContentNulls());
78         assertSame(v, v.withContentNulls(Nulls.FAIL));
79 
80         JsonSetter.Value v2 = v.withValueNulls(Nulls.SKIP);
81         assertEquals(Nulls.SKIP, v2.getValueNulls());
82         assertFalse(v.equals(v2));
83         assertFalse(v2.equals(v));
84 
85         JsonSetter.Value v3 = v2.withValueNulls(null, null);
86         assertEquals(Nulls.DEFAULT, v3.getContentNulls());
87         assertEquals(Nulls.DEFAULT, v3.getValueNulls());
88         assertSame(v3, v3.withValueNulls(null, null));
89 
90         JsonSetter.Value merged = v3.withOverrides(v2);
91         assertNotSame(v2, merged);
92         assertEquals(merged, v2);
93         assertEquals(v2, merged);
94     }
95 }
96