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