review comments
This commit is contained in:
		
							parent
							
								
									b1834b6d96
								
							
						
					
					
						commit
						02fd91ad35
					
				| @ -1,14 +1,18 @@ | |||||||
| package org.baeldung.gson.entities; | package org.baeldung.gson.entities; | ||||||
| 
 | 
 | ||||||
|  | import java.util.Objects; | ||||||
|  | 
 | ||||||
| public class MyClass { | public class MyClass { | ||||||
|     private int id; |     private int id; | ||||||
|     private String[] strings; |     private String name; | ||||||
| 
 | 
 | ||||||
|     public MyClass() { |     public MyClass(int id, String name) { | ||||||
|         id = 1; |         this.id = id; | ||||||
|         strings = new String[] { "a", "b" }; |         this.name = name; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public MyClass() { } | ||||||
|  | 
 | ||||||
|     public int getId() { |     public int getId() { | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
| @ -17,11 +21,27 @@ public class MyClass { | |||||||
|         this.id = id; |         this.id = id; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public String[] getStrings() { |     public String getName() { | ||||||
|         return strings; |         return name; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setStrings(String[] strings) { |     public void setName(String name) { | ||||||
|         this.strings = strings; |         this.name = name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override public boolean equals(Object o) { | ||||||
|  |         if (this == o) { | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  |         if (o == null || getClass() != o.getClass()) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |         MyClass myClass = (MyClass) o; | ||||||
|  |         return id == myClass.id && Objects.equals(name, myClass.name); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override public int hashCode() { | ||||||
|  | 
 | ||||||
|  |         return Objects.hash(id, name); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ import com.google.gson.GsonBuilder; | |||||||
| import com.google.gson.reflect.TypeToken; | import com.google.gson.reflect.TypeToken; | ||||||
| import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.Arrays; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import org.baeldung.gson.entities.Animal; | import org.baeldung.gson.entities.Animal; | ||||||
| import org.baeldung.gson.entities.Cow; | import org.baeldung.gson.entities.Cow; | ||||||
| @ -18,40 +19,42 @@ import org.junit.Test; | |||||||
| 
 | 
 | ||||||
| public class GsonAdvanceUnitTest { | public class GsonAdvanceUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Test public void givenListOfMyClass_whenSerializing_thenCorrect() { |     @Test | ||||||
|         List<MyClass> list = new ArrayList<>(); |     public void givenListOfMyClass_whenSerializing_thenCorrect() { | ||||||
|         list.add(new MyClass()); |         List<MyClass> list = Arrays.asList(new MyClass(1, "name1"), new MyClass(2, "name2")); | ||||||
|         list.add(new MyClass()); |  | ||||||
| 
 | 
 | ||||||
|         Gson gson = new Gson(); |         Gson gson = new Gson(); | ||||||
|         String jsonString = gson.toJson(list); |         String jsonString = gson.toJson(list); | ||||||
|         String expectedString = "[{\"id\":1,\"strings\":[\"a\",\"b\"]},{\"id\":1,\"strings\":[\"a\",\"b\"]}]"; |         String expectedString = "[{\"id\":1,\"name\":\"name1\"},{\"id\":2,\"name\":\"name2\"}]"; | ||||||
| 
 | 
 | ||||||
|         assertEquals(expectedString, jsonString); |         assertEquals(expectedString, jsonString); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test(expected = ClassCastException.class) |     @Test(expected = ClassCastException.class) | ||||||
|     public void givenJsonString_whenIncorrectDeserializing_thenThrowClassCastException() { |     public void givenJsonString_whenIncorrectDeserializing_thenThrowClassCastException() { | ||||||
|         String inputString = "[{\"id\":1,\"strings\":[\"a\",\"b\"]},{\"id\":1,\"strings\":[\"a\",\"b\"]}]"; |         String inputString = "[{\"id\":1,\"name\":\"name1\"},{\"id\":2,\"name\":\"name2\"}]"; | ||||||
| 
 | 
 | ||||||
|         Gson gson = new Gson(); |         Gson gson = new Gson(); | ||||||
|         List<MyClass> list = gson.fromJson(inputString, ArrayList.class); |         List<MyClass> outputList = gson.fromJson(inputString, ArrayList.class); | ||||||
| 
 | 
 | ||||||
|         assertEquals(1, list.get(0).getId()); |         assertEquals(1, outputList.get(0).getId()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test public void givenJsonString_whenDeserializing_thenReturnListOfMyClass() { |     @Test | ||||||
|         String inputString = "[{\"id\":1,\"strings\":[\"a\",\"b\"]},{\"id\":1,\"strings\":[\"a\",\"b\"]}]"; |     public void givenJsonString_whenDeserializing_thenReturnListOfMyClass() { | ||||||
|  |         String inputString = "[{\"id\":1,\"name\":\"name1\"},{\"id\":2,\"name\":\"name2\"}]"; | ||||||
|  |         List<MyClass> inputList = Arrays.asList(new MyClass(1, "name1"), new MyClass(2, "name2")); | ||||||
|  | 
 | ||||||
|         Type listOfMyClassObject = new TypeToken<ArrayList<MyClass>>() {}.getType(); |         Type listOfMyClassObject = new TypeToken<ArrayList<MyClass>>() {}.getType(); | ||||||
| 
 | 
 | ||||||
|         Gson gson = new Gson(); |         Gson gson = new Gson(); | ||||||
|         List<MyClass> list = gson.fromJson(inputString, listOfMyClassObject); |         List<MyClass> outputList = gson.fromJson(inputString, listOfMyClassObject); | ||||||
| 
 | 
 | ||||||
|         assertEquals(2, list.size()); |         assertEquals(inputList, outputList); | ||||||
|         assertEquals(1, list.get(0).getId()); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test public void givenPolymorphicList_whenSerializeWithTypeAdapter_thenCorrect() { |     @Test | ||||||
|  |     public void givenPolymorphicList_whenSerializeWithTypeAdapter_thenCorrect() { | ||||||
|         String expectedString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; |         String expectedString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; | ||||||
| 
 | 
 | ||||||
|         List<Animal> inList = new ArrayList<>(); |         List<Animal> inList = new ArrayList<>(); | ||||||
| @ -63,7 +66,8 @@ public class GsonAdvanceUnitTest { | |||||||
|         assertEquals(expectedString, jsonString); |         assertEquals(expectedString, jsonString); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test public void givenPolymorphicList_whenDeserializeWithTypeAdapter_thenCorrect() { |     @Test | ||||||
|  |     public void givenPolymorphicList_whenDeserializeWithTypeAdapter_thenCorrect() { | ||||||
|         String inputString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; |         String inputString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; | ||||||
| 
 | 
 | ||||||
|         AnimalDeserializer deserializer = new AnimalDeserializer("type"); |         AnimalDeserializer deserializer = new AnimalDeserializer("type"); | ||||||
| @ -79,7 +83,8 @@ public class GsonAdvanceUnitTest { | |||||||
|         assertTrue(outList.get(0) instanceof Dog); |         assertTrue(outList.get(0) instanceof Dog); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test public void givenPolymorphicList_whenSerializeWithRuntimeTypeAdapter_thenCorrect() { |     @Test | ||||||
|  |     public void givenPolymorphicList_whenSerializeWithRuntimeTypeAdapter_thenCorrect() { | ||||||
|         String expectedString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; |         String expectedString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; | ||||||
| 
 | 
 | ||||||
|         List<Animal> inList = new ArrayList<>(); |         List<Animal> inList = new ArrayList<>(); | ||||||
| @ -90,7 +95,8 @@ public class GsonAdvanceUnitTest { | |||||||
|         assertEquals(expectedString, jsonString); |         assertEquals(expectedString, jsonString); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Test public void givenPolymorphicList_whenDeserializeWithRuntimeTypeAdapter_thenCorrect() { |     @Test | ||||||
|  |     public void givenPolymorphicList_whenDeserializeWithRuntimeTypeAdapter_thenCorrect() { | ||||||
|         String inputString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; |         String inputString = "[{\"petName\":\"Milo\",\"type\":\"Dog\"},{\"breed\":\"Jersey\",\"type\":\"Cow\"}]"; | ||||||
| 
 | 
 | ||||||
|         Type listOfAnimals = new TypeToken<ArrayList<Animal>>() {}.getType(); |         Type listOfAnimals = new TypeToken<ArrayList<Animal>>() {}.getType(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user