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