1 package com.fasterxml.jackson.annotation; 2 3 public class JacksonInjectTest extends TestBase 4 { 5 private final static class Bogus { 6 @JacksonInject(value="inject", useInput=OptBoolean.FALSE) 7 public int field; 8 9 @JacksonInject 10 public int vanilla; 11 } 12 13 private final JacksonInject.Value EMPTY = JacksonInject.Value.empty(); 14 testEmpty()15 public void testEmpty() 16 { 17 assertNull(EMPTY.getId()); 18 assertNull(EMPTY.getUseInput()); 19 assertTrue(EMPTY.willUseInput(true)); 20 assertFalse(EMPTY.willUseInput(false)); 21 22 assertSame(EMPTY, JacksonInject.Value.construct(null, null)); 23 // also, "" gets coerced to null so 24 assertSame(EMPTY, JacksonInject.Value.construct("", null)); 25 } 26 testFromAnnotation()27 public void testFromAnnotation() throws Exception 28 { 29 assertSame(EMPTY, JacksonInject.Value.from(null)); // legal 30 31 JacksonInject ann = Bogus.class.getField("field").getAnnotation(JacksonInject.class); 32 JacksonInject.Value v = JacksonInject.Value.from(ann); 33 assertEquals("inject", v.getId()); 34 assertEquals(Boolean.FALSE, v.getUseInput()); 35 36 assertEquals("JacksonInject.Value(id=inject,useInput=false)", v.toString()); 37 assertFalse(v.equals(EMPTY)); 38 assertFalse(EMPTY.equals(v)); 39 40 JacksonInject ann2 = Bogus.class.getField("vanilla").getAnnotation(JacksonInject.class); 41 v = JacksonInject.Value.from(ann2); 42 assertSame(EMPTY, v); 43 } 44 testStdMethods()45 public void testStdMethods() { 46 assertEquals("JacksonInject.Value(id=null,useInput=null)", 47 EMPTY.toString()); 48 int x = EMPTY.hashCode(); 49 if (x == 0) { // no fixed value, but should not evalute to 0 50 fail(); 51 } 52 assertEquals(EMPTY, EMPTY); 53 assertFalse(EMPTY.equals(null)); 54 assertFalse(EMPTY.equals("xyz")); 55 } 56 testFactories()57 public void testFactories() throws Exception 58 { 59 JacksonInject.Value v = EMPTY.withId("name"); 60 assertNotSame(EMPTY, v); 61 assertEquals("name", v.getId()); 62 assertSame(v, v.withId("name")); 63 64 JacksonInject.Value v2 = v.withUseInput(Boolean.TRUE); 65 assertNotSame(v, v2); 66 assertFalse(v.equals(v2)); 67 assertFalse(v2.equals(v)); 68 assertSame(v2, v2.withUseInput(Boolean.TRUE)); 69 70 int x = v2.hashCode(); 71 if (x == 0) { // no fixed value, but should not evalute to 0 72 fail(); 73 } 74 } 75 } 76