1111import java .util .Arrays ;
1212import java .util .List ;
1313
14- import static org .junit .Assert .* ;
14+ import static org .junit .Assert .assertEquals ;
1515
1616public final class JsonNullableSimpleTest {
1717
@@ -69,22 +69,44 @@ public void serializeCollection() throws JsonProcessingException {
6969 }
7070
7171 @ Test
72- public void deserialize () throws IOException {
72+ public void deserializeStringMembers () throws IOException {
7373 testReadPetName (JsonNullable .of ("Rex" ), "{\" name\" :\" Rex\" }" );
7474 testReadPetName (JsonNullable .<String >of (null ), "{\" name\" :null}" );
75+ testReadPetName (JsonNullable .<String >of ("" ), "{\" name\" :\" \" }" );
76+ testReadPetName (JsonNullable .<String >of (" " ), "{\" name\" :\" \" }" );
7577 testReadPetName (JsonNullable .<String >undefined (), "{}" );
7678 }
7779
7880 @ Test
79- public void deserializeNonBeanProperty () throws IOException {
81+ public void deserializeNonStringMembers () throws IOException {
82+ testReadPetAge (JsonNullable .of (Integer .valueOf (15 )), "{\" age\" :\" 15\" }" );
83+ testReadPetAge (JsonNullable .<Integer >of (null ), "{\" age\" :null}" );
84+ testReadPetAge (JsonNullable .<Integer >undefined (), "{\" age\" :\" \" }" );
85+ testReadPetAge (JsonNullable .<Integer >undefined (), "{\" age\" :\" \" }" );
86+ testReadPetAge (JsonNullable .<Integer >undefined (), "{}" );
87+ }
88+
89+ @ Test
90+ public void deserializeStringNonBeanMembers () throws IOException {
91+ assertEquals (JsonNullable .of (null ), mapper .readValue ("null" , new TypeReference <JsonNullable <String >>() {}));
92+ assertEquals (JsonNullable .of ("42" ), mapper .readValue ("\" 42\" " , new TypeReference <JsonNullable <String >>() {}));
93+ assertEquals (JsonNullable .of ("" ), mapper .readValue ("\" \" " , new TypeReference <JsonNullable <String >>() {}));
94+ assertEquals (JsonNullable .of (" " ), mapper .readValue ("\" \" " , new TypeReference <JsonNullable <String >>() {}));
95+ }
96+
97+ @ Test
98+ public void deserializeNonStringNonBeanMembers () throws IOException {
8099 assertEquals (JsonNullable .of (null ), mapper .readValue ("\" null\" " , new TypeReference <JsonNullable <Integer >>() {}));
81100 assertEquals (JsonNullable .of (42 ), mapper .readValue ("\" 42\" " , new TypeReference <JsonNullable <Integer >>() {}));
82101 assertEquals (JsonNullable .undefined (), mapper .readValue ("\" \" " , new TypeReference <JsonNullable <Integer >>() {}));
102+ assertEquals (JsonNullable .undefined (), mapper .readValue ("\" \" " , new TypeReference <JsonNullable <Integer >>() {}));
83103 }
84104
85105 @ Test
86106 public void deserializeCollection () throws IOException {
87- List <JsonNullable <String >> values = mapper .readValue ("[\" foo\" , null]" , new TypeReference <List <JsonNullable <String >>>() {});
107+ List <JsonNullable <String >> values = mapper .readValue ("[\" foo\" , null]" ,
108+ new TypeReference <List <JsonNullable <String >>>() {
109+ });
88110 assertEquals (2 , values .size ());
89111 assertEquals (JsonNullable .of ("foo" ), values .get (0 ));
90112 assertEquals (JsonNullable .of (null ), values .get (1 ));
@@ -96,13 +118,25 @@ private void testReadPetName(JsonNullable<String> expected, String json) throws
96118 assertEquals (expected , name );
97119 }
98120
121+ private void testReadPetAge (JsonNullable <Integer > expected , String json ) throws IOException {
122+ Pet pet = mapper .readValue (json , Pet .class );
123+ JsonNullable <Integer > age = pet .age ;
124+ assertEquals (expected , age );
125+ }
126+
99127 private static class Pet {
100128
101129 public JsonNullable <String > name = JsonNullable .undefined ();
130+ public JsonNullable <Integer > age = JsonNullable .undefined ();
102131
103132 public Pet name (JsonNullable <String > name ) {
104133 this .name = name ;
105134 return this ;
106135 }
136+
137+ public Pet age (JsonNullable <Integer > age ) {
138+ this .age = age ;
139+ return this ;
140+ }
107141 }
108142}
0 commit comments