aboutsummaryrefslogtreecommitdiff
path: root/gson/src/test/java/com/google/gson/functional
diff options
context:
space:
mode:
Diffstat (limited to 'gson/src/test/java/com/google/gson/functional')
-rw-r--r--gson/src/test/java/com/google/gson/functional/ArrayTest.java44
-rw-r--r--gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java27
-rw-r--r--gson/src/test/java/com/google/gson/functional/CollectionTest.java42
-rw-r--r--gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java20
-rw-r--r--gson/src/test/java/com/google/gson/functional/CustomDeserializerTest.java22
-rw-r--r--gson/src/test/java/com/google/gson/functional/CustomSerializerTest.java24
-rw-r--r--gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java39
-rw-r--r--gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java78
-rw-r--r--gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java20
-rw-r--r--gson/src/test/java/com/google/gson/functional/EnumTest.java30
-rw-r--r--gson/src/test/java/com/google/gson/functional/EnumWithObfuscatedTest.java15
-rw-r--r--gson/src/test/java/com/google/gson/functional/EscapingTest.java19
-rw-r--r--gson/src/test/java/com/google/gson/functional/ExclusionStrategyFunctionalTest.java24
-rw-r--r--gson/src/test/java/com/google/gson/functional/ExposeFieldsTest.java25
-rw-r--r--gson/src/test/java/com/google/gson/functional/FieldExclusionTest.java16
-rw-r--r--gson/src/test/java/com/google/gson/functional/FieldNamingTest.java11
-rw-r--r--gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java20
-rw-r--r--gson/src/test/java/com/google/gson/functional/InheritanceTest.java30
-rw-r--r--gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java13
-rw-r--r--gson/src/test/java/com/google/gson/functional/InterfaceTest.java15
-rw-r--r--gson/src/test/java/com/google/gson/functional/InternationalizationTest.java18
-rw-r--r--gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java28
-rw-r--r--gson/src/test/java/com/google/gson/functional/JavaUtilTest.java20
-rw-r--r--gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnClassesTest.java18
-rw-r--r--gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java24
-rw-r--r--gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java14
-rw-r--r--gson/src/test/java/com/google/gson/functional/JsonParserTest.java23
-rw-r--r--gson/src/test/java/com/google/gson/functional/JsonTreeTest.java19
-rw-r--r--gson/src/test/java/com/google/gson/functional/LeniencyTest.java16
-rw-r--r--gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java15
-rw-r--r--gson/src/test/java/com/google/gson/functional/MapTest.java64
-rw-r--r--gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java23
-rw-r--r--gson/src/test/java/com/google/gson/functional/NamingPolicyTest.java39
-rw-r--r--gson/src/test/java/com/google/gson/functional/NullObjectAndFieldTest.java37
-rw-r--r--gson/src/test/java/com/google/gson/functional/ObjectTest.java97
-rw-r--r--gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java33
-rw-r--r--gson/src/test/java/com/google/gson/functional/PrimitiveCharacterTest.java13
-rw-r--r--gson/src/test/java/com/google/gson/functional/PrimitiveTest.java158
-rw-r--r--gson/src/test/java/com/google/gson/functional/PrintFormattingTest.java16
-rw-r--r--gson/src/test/java/com/google/gson/functional/RawSerializationTest.java21
-rw-r--r--gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java27
-rw-r--r--gson/src/test/java/com/google/gson/functional/ReflectionAccessTest.java2
-rw-r--r--gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java13
-rw-r--r--gson/src/test/java/com/google/gson/functional/SecurityTest.java19
-rw-r--r--gson/src/test/java/com/google/gson/functional/SerializedNameTest.java10
-rw-r--r--gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java32
-rw-r--r--gson/src/test/java/com/google/gson/functional/StringTest.java31
-rw-r--r--gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java26
-rw-r--r--gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java14
-rw-r--r--gson/src/test/java/com/google/gson/functional/TypeAdapterPrecedenceTest.java14
-rw-r--r--gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java9
-rw-r--r--gson/src/test/java/com/google/gson/functional/TypeVariableTest.java9
-rw-r--r--gson/src/test/java/com/google/gson/functional/UncategorizedTest.java25
53 files changed, 1131 insertions, 330 deletions
diff --git a/gson/src/test/java/com/google/gson/functional/ArrayTest.java b/gson/src/test/java/com/google/gson/functional/ArrayTest.java
index 9d0f89ad..e1a8c02e 100644
--- a/gson/src/test/java/com/google/gson/functional/ArrayTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ArrayTest.java
@@ -17,6 +17,10 @@
package com.google.gson.functional;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -28,33 +32,36 @@ import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json serialization and deserialization of arrays.
*
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class ArrayTest extends TestCase {
+public class ArrayTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testTopLevelArrayOfIntsSerialization() {
int[] target = {1, 2, 3, 4, 5, 6, 7, 8, 9};
assertEquals("[1,2,3,4,5,6,7,8,9]", gson.toJson(target));
}
+ @Test
public void testTopLevelArrayOfIntsDeserialization() {
int[] expected = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] actual = gson.fromJson("[1,2,3,4,5,6,7,8,9]", int[].class);
assertArrayEquals(expected, actual);
}
+ @Test
public void testInvalidArrayDeserialization() {
String json = "[1, 2 3, 4, 5]";
try {
@@ -64,11 +71,13 @@ public class ArrayTest extends TestCase {
}
}
+ @Test
public void testEmptyArraySerialization() {
int[] target = {};
assertEquals("[]", gson.toJson(target));
}
+ @Test
public void testEmptyArrayDeserialization() {
int[] actualObject = gson.fromJson("[]", int[].class);
assertTrue(actualObject.length == 0);
@@ -80,6 +89,7 @@ public class ArrayTest extends TestCase {
assertTrue(actualObject.length == 0);
}
+ @Test
public void testNullsInArraySerialization() {
String[] array = {"foo", null, "bar"};
String expected = "[\"foo\",null,\"bar\"]";
@@ -87,6 +97,7 @@ public class ArrayTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testNullsInArrayDeserialization() {
String json = "[\"foo\",null,\"bar\"]";
String[] expected = {"foo", null, "bar"};
@@ -96,6 +107,7 @@ public class ArrayTest extends TestCase {
}
}
+ @Test
public void testSingleNullInArraySerialization() {
BagOfPrimitives[] array = new BagOfPrimitives[1];
array[0] = null;
@@ -103,11 +115,13 @@ public class ArrayTest extends TestCase {
assertEquals("[null]", json);
}
+ @Test
public void testSingleNullInArrayDeserialization() {
BagOfPrimitives[] array = gson.fromJson("[null]", BagOfPrimitives[].class);
assertNull(array[0]);
}
+ @Test
public void testNullsInArrayWithSerializeNullPropertySetSerialization() {
gson = new GsonBuilder().serializeNulls().create();
String[] array = {"foo", null, "bar"};
@@ -116,11 +130,13 @@ public class ArrayTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testArrayOfStringsSerialization() {
String[] target = {"Hello", "World"};
assertEquals("[\"Hello\",\"World\"]", gson.toJson(target));
}
+ @Test
public void testArrayOfStringsDeserialization() {
String json = "[\"Hello\",\"World\"]";
String[] target = gson.fromJson(json, String[].class);
@@ -128,12 +144,14 @@ public class ArrayTest extends TestCase {
assertEquals("World", target[1]);
}
+ @Test
public void testSingleStringArraySerialization() throws Exception {
String[] s = { "hello" };
String output = gson.toJson(s);
assertEquals("[\"hello\"]", output);
}
+ @Test
public void testSingleStringArrayDeserialization() throws Exception {
String json = "[\"hello\"]";
String[] arrayType = gson.fromJson(json, String[].class);
@@ -141,6 +159,7 @@ public class ArrayTest extends TestCase {
assertEquals("hello", arrayType[0]);
}
+ @Test
public void testArrayOfCollectionSerialization() throws Exception {
StringBuilder sb = new StringBuilder("[");
int arraySize = 3;
@@ -166,6 +185,7 @@ public class ArrayTest extends TestCase {
assertEquals(sb.toString(), json);
}
+ @Test
public void testArrayOfCollectionDeserialization() throws Exception {
String json = "[[1,2],[3,4]]";
Type type = new TypeToken<Collection<Integer>[]>() {}.getType();
@@ -176,6 +196,7 @@ public class ArrayTest extends TestCase {
assertArrayEquals(new Integer[] {3, 4}, target[1].toArray(new Integer[0]));
}
+ @Test
public void testArrayOfPrimitivesAsObjectsSerialization() throws Exception {
Object[] objs = new Object[] {1, "abc", 0.3f, 5L};
String json = gson.toJson(objs);
@@ -184,16 +205,18 @@ public class ArrayTest extends TestCase {
assertTrue(json.contains("5"));
}
+ @Test
public void testArrayOfPrimitivesAsObjectsDeserialization() throws Exception {
String json = "[1,'abc',0.3,1.1,5]";
Object[] objs = gson.fromJson(json, Object[].class);
assertEquals(1, ((Number)objs[0]).intValue());
assertEquals("abc", objs[1]);
- assertEquals(0.3, ((Number)objs[2]).doubleValue());
+ assertEquals(0.3, ((Number)objs[2]).doubleValue(), 0);
assertEquals(new BigDecimal("1.1"), new BigDecimal(objs[3].toString()));
assertEquals(5, ((Number)objs[4]).shortValue());
}
+ @Test
public void testObjectArrayWithNonPrimitivesSerialization() throws Exception {
ClassWithObjects classWithObjects = new ClassWithObjects();
BagOfPrimitives bagOfPrimitives = new BagOfPrimitives();
@@ -207,12 +230,14 @@ public class ArrayTest extends TestCase {
assertTrue(json.contains(bagOfPrimitivesJson));
}
+ @Test
public void testArrayOfNullSerialization() {
Object[] array = {null};
String json = gson.toJson(array);
assertEquals("[null]", json);
}
+ @Test
public void testArrayOfNullDeserialization() {
String[] values = gson.fromJson("[null]", String[].class);
assertNull(values[0]);
@@ -221,6 +246,7 @@ public class ArrayTest extends TestCase {
/**
* Regression tests for Issue 272
*/
+ @Test
public void testMultidimensionalArraysSerialization() {
String[][] items = {
{"3m Co", "71.72", "0.02", "0.03", "4/2 12:00am", "Manufacturing"},
@@ -231,11 +257,13 @@ public class ArrayTest extends TestCase {
assertTrue(json.contains("Manufacturing\"]]"));
}
+ @Test
public void testMultidimensionalObjectArraysSerialization() {
Object[][] array = {new Object[] { 1, 2 }};
assertEquals("[[1,2]]", gson.toJson(array));
}
+ @Test
public void testMultidimensionalPrimitiveArraysSerialization() {
int[][] array = {{1, 2}, {3, 4}};
assertEquals("[[1,2],[3,4]]", gson.toJson(array));
@@ -244,6 +272,7 @@ public class ArrayTest extends TestCase {
/**
* Regression test for Issue 205
*/
+ @Test
public void testMixingTypesInObjectArraySerialization() {
Object[] array = {1, 2, new Object[] {"one", "two", 3}};
assertEquals("[1,2,[\"one\",\"two\",3]]", gson.toJson(array));
@@ -252,6 +281,7 @@ public class ArrayTest extends TestCase {
/**
* Regression tests for Issue 272
*/
+ @Test
public void testMultidimensionalArraysDeserialization() {
String json = "[['3m Co','71.72','0.02','0.03','4/2 12:00am','Manufacturing'],"
+ "['Alcoa Inc','29.01','0.42','1.47','4/1 12:00am','Manufacturing']]";
@@ -260,6 +290,7 @@ public class ArrayTest extends TestCase {
assertEquals("Manufacturing", items[1][5]);
}
+ @Test
public void testMultidimensionalPrimitiveArraysDeserialization() {
String json = "[[1,2],[3,4]]";
int[][] expected = {{1, 2}, {3, 4}};
@@ -267,6 +298,7 @@ public class ArrayTest extends TestCase {
}
/** http://code.google.com/p/google-gson/issues/detail?id=342 */
+ @Test
public void testArrayElementsAreArrays() {
Object[] stringArrays = {
new String[] {"test1", "test2"},
diff --git a/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java b/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
index f4419551..053d8b46 100644
--- a/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CircularReferenceTest.java
@@ -15,11 +15,10 @@
*/
package com.google.gson.functional;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -28,6 +27,11 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.common.TestTypes.ClassOverridingEquals;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests related to circular reference detection and error reporting.
@@ -35,15 +39,15 @@ import com.google.gson.common.TestTypes.ClassOverridingEquals;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class CircularReferenceTest extends TestCase {
+public class CircularReferenceTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testCircularSerialization() throws Exception {
ContainsReferenceToSelfType a = new ContainsReferenceToSelfType();
ContainsReferenceToSelfType b = new ContainsReferenceToSelfType();
@@ -56,6 +60,7 @@ public class CircularReferenceTest extends TestCase {
}
}
+ @Test
public void testSelfReferenceIgnoredInSerialization() throws Exception {
ClassOverridingEquals objA = new ClassOverridingEquals();
objA.ref = objA;
@@ -64,6 +69,7 @@ public class CircularReferenceTest extends TestCase {
assertFalse(json.contains("ref")); // self-reference is ignored
}
+ @Test
public void testSelfReferenceArrayFieldSerialization() throws Exception {
ClassWithSelfReferenceArray objA = new ClassWithSelfReferenceArray();
objA.children = new ClassWithSelfReferenceArray[]{objA};
@@ -75,6 +81,7 @@ public class CircularReferenceTest extends TestCase {
}
}
+ @Test
public void testSelfReferenceCustomHandlerSerialization() throws Exception {
ClassWithSelfReference obj = new ClassWithSelfReference();
obj.child = obj;
@@ -94,6 +101,7 @@ public class CircularReferenceTest extends TestCase {
}
}
+ @Test
public void testDirectedAcyclicGraphSerialization() throws Exception {
ContainsReferenceToSelfType a = new ContainsReferenceToSelfType();
ContainsReferenceToSelfType b = new ContainsReferenceToSelfType();
@@ -104,6 +112,7 @@ public class CircularReferenceTest extends TestCase {
assertNotNull(gson.toJson(a));
}
+ @Test
public void testDirectedAcyclicGraphDeserialization() throws Exception {
String json = "{\"children\":[{\"children\":[{\"children\":[]}]},{\"children\":[]}]}";
ContainsReferenceToSelfType target = gson.fromJson(json, ContainsReferenceToSelfType.class);
diff --git a/gson/src/test/java/com/google/gson/functional/CollectionTest.java b/gson/src/test/java/com/google/gson/functional/CollectionTest.java
index 44a655c8..e40afe24 100644
--- a/gson/src/test/java/com/google/gson/functional/CollectionTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CollectionTest.java
@@ -17,6 +17,9 @@
package com.google.gson.functional;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -40,7 +43,8 @@ import java.util.Queue;
import java.util.Set;
import java.util.Stack;
import java.util.Vector;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json serialization and deserialization of collections.
@@ -48,15 +52,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class CollectionTest extends TestCase {
+public class CollectionTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testTopLevelCollectionOfIntegersSerialization() {
Collection<Integer> target = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
Type targetType = new TypeToken<Collection<Integer>>() {}.getType();
@@ -64,6 +68,7 @@ public class CollectionTest extends TestCase {
assertEquals("[1,2,3,4,5,6,7,8,9]", json);
}
+ @Test
public void testTopLevelCollectionOfIntegersDeserialization() {
String json = "[0,1,2,3,4,5,6,7,8,9]";
Type collectionType = new TypeToken<Collection<Integer>>() { }.getType();
@@ -72,6 +77,7 @@ public class CollectionTest extends TestCase {
assertArrayEquals(expected, toIntArray(target));
}
+ @Test
public void testTopLevelListOfIntegerCollectionsDeserialization() throws Exception {
String json = "[[1,2,3],[4,5,6],[7,8,9]]";
Type collectionType = new TypeToken<Collection<Collection<Integer>>>() {}.getType();
@@ -89,6 +95,7 @@ public class CollectionTest extends TestCase {
}
}
+ @Test
public void testLinkedListSerialization() {
List<String> list = new LinkedList<>();
list.add("a1");
@@ -99,6 +106,7 @@ public class CollectionTest extends TestCase {
assertTrue(json.contains("a2"));
}
+ @Test
public void testLinkedListDeserialization() {
String json = "['a1','a2']";
Type linkedListType = new TypeToken<LinkedList<String>>() {}.getType();
@@ -107,6 +115,7 @@ public class CollectionTest extends TestCase {
assertEquals("a2", list.get(1));
}
+ @Test
public void testQueueSerialization() {
Queue<String> queue = new LinkedList<>();
queue.add("a1");
@@ -117,6 +126,7 @@ public class CollectionTest extends TestCase {
assertTrue(json.contains("a2"));
}
+ @Test
public void testQueueDeserialization() {
String json = "['a1','a2']";
Type queueType = new TypeToken<Queue<String>>() {}.getType();
@@ -126,6 +136,7 @@ public class CollectionTest extends TestCase {
assertEquals("a2", queue.element());
}
+ @Test
public void testPriorityQueue() throws Exception {
Type type = new TypeToken<PriorityQueue<Integer>>(){}.getType();
PriorityQueue<Integer> queue = gson.fromJson("[10, 20, 22]", type);
@@ -137,6 +148,7 @@ public class CollectionTest extends TestCase {
assertEquals("[10,20,22]", json);
}
+ @Test
public void testVector() {
Type type = new TypeToken<Vector<Integer>>(){}.getType();
Vector<Integer> target = gson.fromJson("[10, 20, 31]", type);
@@ -148,6 +160,7 @@ public class CollectionTest extends TestCase {
assertEquals("[10,20,31]", json);
}
+ @Test
public void testStack() {
Type type = new TypeToken<Stack<Integer>>(){}.getType();
Stack<Integer> target = gson.fromJson("[11, 13, 17]", type);
@@ -159,6 +172,7 @@ public class CollectionTest extends TestCase {
assertEquals("[11,13,17]", json);
}
+ @Test
public void testNullsInListSerialization() {
List<String> list = new ArrayList<>();
list.add("foo");
@@ -170,6 +184,7 @@ public class CollectionTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testNullsInListDeserialization() {
List<String> expected = new ArrayList<>();
expected.add("foo");
@@ -183,6 +198,7 @@ public class CollectionTest extends TestCase {
}
}
+ @Test
public void testCollectionOfObjectSerialization() {
List<Object> target = new ArrayList<>();
target.add("Hello");
@@ -193,6 +209,7 @@ public class CollectionTest extends TestCase {
assertEquals("[\"Hello\",\"World\"]", gson.toJson(target, type));
}
+ @Test
public void testCollectionOfObjectWithNullSerialization() {
List<Object> target = new ArrayList<>();
target.add("Hello");
@@ -204,6 +221,7 @@ public class CollectionTest extends TestCase {
assertEquals("[\"Hello\",null,\"World\"]", gson.toJson(target, type));
}
+ @Test
public void testCollectionOfStringsSerialization() {
List<String> target = new ArrayList<>();
target.add("Hello");
@@ -211,6 +229,7 @@ public class CollectionTest extends TestCase {
assertEquals("[\"Hello\",\"World\"]", gson.toJson(target));
}
+ @Test
public void testCollectionOfBagOfPrimitivesSerialization() {
List<BagOfPrimitives> target = new ArrayList<>();
BagOfPrimitives objA = new BagOfPrimitives(3L, 1, true, "blah");
@@ -226,6 +245,7 @@ public class CollectionTest extends TestCase {
}
}
+ @Test
public void testCollectionOfStringsDeserialization() {
String json = "[\"Hello\",\"World\"]";
Type collectionType = new TypeToken<Collection<String>>() { }.getType();
@@ -235,11 +255,13 @@ public class CollectionTest extends TestCase {
assertTrue(target.contains("World"));
}
+ @Test
public void testRawCollectionOfIntegersSerialization() {
Collection<Integer> target = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
assertEquals("[1,2,3,4,5,6,7,8,9]", gson.toJson(target));
}
+ @Test
public void testObjectCollectionSerialization() {
BagOfPrimitives bag1 = new BagOfPrimitives();
Collection<?> target = Arrays.asList(bag1, bag1, "test");
@@ -247,6 +269,7 @@ public class CollectionTest extends TestCase {
assertTrue(json.contains(bag1.getExpectedJson()));
}
+ @Test
public void testRawCollectionDeserializationNotAlllowed() {
String json = "[0,1,2,3,4,5,6,7,8,9]";
Collection<?> integers = gson.fromJson(json, Collection.class);
@@ -259,6 +282,7 @@ public class CollectionTest extends TestCase {
assertTrue(strings.contains("World"));
}
+ @Test
public void testRawCollectionOfBagOfPrimitivesNotAllowed() {
BagOfPrimitives bag = new BagOfPrimitives(10, 20, false, "stringValue");
String json = '[' + bag.getExpectedJson() + ',' + bag.getExpectedJson() + ']';
@@ -274,6 +298,7 @@ public class CollectionTest extends TestCase {
}
}
+ @Test
public void testWildcardPrimitiveCollectionSerilaization() throws Exception {
Collection<? extends Integer> target = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
Type collectionType = new TypeToken<Collection<? extends Integer>>() { }.getType();
@@ -284,6 +309,7 @@ public class CollectionTest extends TestCase {
assertEquals("[1,2,3,4,5,6,7,8,9]", json);
}
+ @Test
public void testWildcardPrimitiveCollectionDeserilaization() throws Exception {
String json = "[1,2,3,4,5,6,7,8,9]";
Type collectionType = new TypeToken<Collection<? extends Integer>>() { }.getType();
@@ -293,6 +319,7 @@ public class CollectionTest extends TestCase {
assertTrue(target.contains(9));
}
+ @Test
public void testWildcardCollectionField() throws Exception {
Collection<BagOfPrimitives> collection = new ArrayList<>();
BagOfPrimitives objA = new BagOfPrimitives(3L, 1, true, "blah");
@@ -312,6 +339,7 @@ public class CollectionTest extends TestCase {
assertTrue(deserializedCollection.contains(objB));
}
+ @Test
public void testFieldIsArrayList() {
HasArrayListField object = new HasArrayListField();
object.longs.add(1L);
@@ -322,6 +350,7 @@ public class CollectionTest extends TestCase {
assertEquals(Arrays.asList(1L, 3L), copy.longs);
}
+ @Test
public void testUserCollectionTypeAdapter() {
Type listOfString = new TypeToken<List<String>>() {}.getType();
Object stringListSerializer = new JsonSerializer<List<String>>() {
@@ -372,6 +401,7 @@ public class CollectionTest extends TestCase {
this.value = value;
}
}
+ @Test
public void testSetSerialization() {
Set<Entry> set = new HashSet<>();
set.add(new Entry(1));
@@ -380,6 +410,7 @@ public class CollectionTest extends TestCase {
assertTrue(json.contains("1"));
assertTrue(json.contains("2"));
}
+ @Test
public void testSetDeserialization() {
String json = "[{value:1},{value:2}]";
Type type = new TypeToken<Set<Entry>>() {}.getType();
@@ -394,6 +425,7 @@ public class CollectionTest extends TestCase {
private class SmallClass { private String inSmall; }
+ @Test
public void testIssue1107() {
String json = "{\n" +
" \"inBig\": {\n" +
diff --git a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
index 318c6ac3..eeabcee1 100644
--- a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
@@ -15,14 +15,15 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertFalse;
+
+import com.google.gson.Gson;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
-
-import junit.framework.TestCase;
-
-import com.google.gson.Gson;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests for ensuring Gson thread-safety.
@@ -30,12 +31,11 @@ import com.google.gson.Gson;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class ConcurrencyTest extends TestCase {
+public class ConcurrencyTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
@@ -43,6 +43,7 @@ public class ConcurrencyTest extends TestCase {
* Source-code based on
* http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
*/
+ @Test
public void testSingleThreadSerialization() {
MyObject myObj = new MyObject();
for (int i = 0; i < 10; i++) {
@@ -54,6 +55,7 @@ public class ConcurrencyTest extends TestCase {
* Source-code based on
* http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
*/
+ @Test
public void testSingleThreadDeserialization() {
for (int i = 0; i < 10; i++) {
gson.fromJson("{'a':'hello','b':'world','i':1}", MyObject.class);
@@ -64,6 +66,7 @@ public class ConcurrencyTest extends TestCase {
* Source-code based on
* http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
*/
+ @Test
public void testMultiThreadSerialization() throws InterruptedException {
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishedLatch = new CountDownLatch(10);
@@ -95,6 +98,7 @@ public class ConcurrencyTest extends TestCase {
* Source-code based on
* http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
*/
+ @Test
public void testMultiThreadDeserialization() throws InterruptedException {
final CountDownLatch startLatch = new CountDownLatch(1);
final CountDownLatch finishedLatch = new CountDownLatch(10);
diff --git a/gson/src/test/java/com/google/gson/functional/CustomDeserializerTest.java b/gson/src/test/java/com/google/gson/functional/CustomDeserializerTest.java
index 8134ae2d..d5b07285 100644
--- a/gson/src/test/java/com/google/gson/functional/CustomDeserializerTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CustomDeserializerTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -25,10 +28,9 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.common.TestTypes.Base;
import com.google.gson.common.TestTypes.ClassWithBaseField;
-
-import junit.framework.TestCase;
-
import java.lang.reflect.Type;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional Test exercising custom deserialization only. When test applies to both
@@ -36,18 +38,18 @@ import java.lang.reflect.Type;
*
* @author Joel Leitch
*/
-public class CustomDeserializerTest extends TestCase {
+public class CustomDeserializerTest {
private static final String DEFAULT_VALUE = "test123";
private static final String SUFFIX = "blah";
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new GsonBuilder().registerTypeAdapter(DataHolder.class, new DataHolderDeserializer()).create();
}
+ @Test
public void testDefaultConstructorNotCalledOnObject() throws Exception {
DataHolder data = new DataHolder(DEFAULT_VALUE);
String json = gson.toJson(data);
@@ -56,6 +58,7 @@ public class CustomDeserializerTest extends TestCase {
assertEquals(DEFAULT_VALUE + SUFFIX, actual.getData());
}
+ @Test
public void testDefaultConstructorNotCalledOnField() throws Exception {
DataHolderWrapper dataWrapper = new DataHolderWrapper(new DataHolder(DEFAULT_VALUE));
String json = gson.toJson(dataWrapper);
@@ -110,6 +113,7 @@ public class CustomDeserializerTest extends TestCase {
}
}
+ @Test
public void testJsonTypeFieldBasedDeserialization() {
String json = "{field1:'abc',field2:'def',__type__:'SUB_TYPE1'}";
Gson gson = new GsonBuilder().registerTypeAdapter(MyBase.class, new JsonDeserializer<MyBase>() {
@@ -148,6 +152,7 @@ public class CustomDeserializerTest extends TestCase {
String field2;
}
+ @Test
public void testCustomDeserializerReturnsNullForTopLevelObject() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new JsonDeserializer<Base>() {
@@ -162,6 +167,7 @@ public class CustomDeserializerTest extends TestCase {
assertNull(target);
}
+ @Test
public void testCustomDeserializerReturnsNull() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new JsonDeserializer<Base>() {
@@ -176,6 +182,7 @@ public class CustomDeserializerTest extends TestCase {
assertNull(target.base);
}
+ @Test
public void testCustomDeserializerReturnsNullForArrayElements() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new JsonDeserializer<Base>() {
@@ -191,6 +198,7 @@ public class CustomDeserializerTest extends TestCase {
assertNull(target[1]);
}
+ @Test
public void testCustomDeserializerReturnsNullForArrayElementsForArrayField() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new JsonDeserializer<Base>() {
diff --git a/gson/src/test/java/com/google/gson/functional/CustomSerializerTest.java b/gson/src/test/java/com/google/gson/functional/CustomSerializerTest.java
index e04cb67c..3e450ac9 100644
--- a/gson/src/test/java/com/google/gson/functional/CustomSerializerTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CustomSerializerTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
@@ -29,10 +32,8 @@ import com.google.gson.common.TestTypes.ClassWithBaseArrayField;
import com.google.gson.common.TestTypes.ClassWithBaseField;
import com.google.gson.common.TestTypes.Sub;
import com.google.gson.common.TestTypes.SubSerializer;
-
-import junit.framework.TestCase;
-
import java.lang.reflect.Type;
+import org.junit.Test;
/**
* Functional Test exercising custom serialization only. When test applies to both
@@ -40,9 +41,10 @@ import java.lang.reflect.Type;
*
* @author Inderjeet Singh
*/
-public class CustomSerializerTest extends TestCase {
+public class CustomSerializerTest {
- public void testBaseClassSerializerInvokedForBaseClassFields() {
+ @Test
+ public void testBaseClassSerializerInvokedForBaseClassFields() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new BaseSerializer())
.registerTypeAdapter(Sub.class, new SubSerializer())
@@ -53,7 +55,8 @@ public class CustomSerializerTest extends TestCase {
assertEquals(BaseSerializer.NAME, base.get(Base.SERIALIZER_KEY).getAsString());
}
- public void testSubClassSerializerInvokedForBaseClassFieldsHoldingSubClassInstances() {
+ @Test
+ public void testSubClassSerializerInvokedForBaseClassFieldsHoldingSubClassInstances() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new BaseSerializer())
.registerTypeAdapter(Sub.class, new SubSerializer())
@@ -64,7 +67,8 @@ public class CustomSerializerTest extends TestCase {
assertEquals(SubSerializer.NAME, base.get(Base.SERIALIZER_KEY).getAsString());
}
- public void testSubClassSerializerInvokedForBaseClassFieldsHoldingArrayOfSubClassInstances() {
+ @Test
+ public void testSubClassSerializerInvokedForBaseClassFieldsHoldingArrayOfSubClassInstances() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new BaseSerializer())
.registerTypeAdapter(Sub.class, new SubSerializer())
@@ -78,7 +82,8 @@ public class CustomSerializerTest extends TestCase {
}
}
- public void testBaseClassSerializerInvokedForBaseClassFieldsHoldingSubClassInstances() {
+ @Test
+ public void testBaseClassSerializerInvokedForBaseClassFieldsHoldingSubClassInstances() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new BaseSerializer())
.create();
@@ -88,7 +93,8 @@ public class CustomSerializerTest extends TestCase {
assertEquals(BaseSerializer.NAME, base.get(Base.SERIALIZER_KEY).getAsString());
}
- public void testSerializerReturnsNull() {
+ @Test
+ public void testSerializerReturnsNull() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new JsonSerializer<Base>() {
@Override public JsonElement serialize(Base src, Type typeOfSrc, JsonSerializationContext context) {
diff --git a/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
index 1c38e6ca..3881f096 100644
--- a/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/CustomTypeAdaptersTest.java
@@ -15,6 +15,11 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
@@ -35,7 +40,9 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
/**
* Functional tests for the support of custom serializer and deserializers.
@@ -43,15 +50,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class CustomTypeAdaptersTest extends TestCase {
+public class CustomTypeAdaptersTest {
private GsonBuilder builder;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
builder = new GsonBuilder();
}
+ @Test
public void testCustomSerializers() {
Gson gson = builder.registerTypeAdapter(
ClassWithCustomTypeConverter.class, new JsonSerializer<ClassWithCustomTypeConverter>() {
@@ -67,6 +74,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("{\"bag\":5,\"value\":25}", gson.toJson(target));
}
+ @Test
public void testCustomDeserializers() {
Gson gson = new GsonBuilder().registerTypeAdapter(
ClassWithCustomTypeConverter.class, new JsonDeserializer<ClassWithCustomTypeConverter>() {
@@ -83,6 +91,8 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals(5, target.getBag().getIntValue());
}
+ @Test
+ @Ignore
public void disable_testCustomSerializersOfSelf() {
Gson gson = createGsonObjectWithFooTypeAdapter();
Gson basicGson = new Gson();
@@ -93,6 +103,8 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals(jsonFromGson, jsonFromCustomSerializer);
}
+ @Test
+ @Ignore
public void disable_testCustomDeserializersOfSelf() {
Gson gson = createGsonObjectWithFooTypeAdapter();
Gson basicGson = new Gson();
@@ -104,6 +116,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals(expectedFoo.value, newFooObject.value);
}
+ @Test
public void testCustomNestedSerializers() {
Gson gson = new GsonBuilder().registerTypeAdapter(
BagOfPrimitives.class, new JsonSerializer<BagOfPrimitives>() {
@@ -116,6 +129,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("{\"bag\":6,\"value\":10}", gson.toJson(target));
}
+ @Test
public void testCustomNestedDeserializers() {
Gson gson = new GsonBuilder().registerTypeAdapter(
BagOfPrimitives.class, new JsonDeserializer<BagOfPrimitives>() {
@@ -130,6 +144,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals(7, target.getBag().getIntValue());
}
+ @Test
public void testCustomTypeAdapterDoesNotAppliesToSubClasses() {
Gson gson = new GsonBuilder().registerTypeAdapter(Base.class, new JsonSerializer<Base> () {
@Override
@@ -147,6 +162,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertTrue(json.contains("derivedValue"));
}
+ @Test
public void testCustomTypeAdapterAppliesToSubClassesSerializedAsBaseClass() {
Gson gson = new GsonBuilder().registerTypeAdapter(Base.class, new JsonSerializer<Base> () {
@Override
@@ -206,6 +222,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testCustomSerializerInvokedForPrimitives() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(boolean.class, new JsonSerializer<Boolean>() {
@@ -218,6 +235,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("true", gson.toJson(true, Boolean.class));
}
+ @Test
public void testCustomDeserializerInvokedForPrimitives() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(boolean.class, new JsonDeserializer<Boolean>() {
@@ -231,6 +249,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals(Boolean.TRUE, gson.fromJson("true", Boolean.class));
}
+ @Test
public void testCustomByteArraySerializer() {
Gson gson = new GsonBuilder().registerTypeAdapter(byte[].class, new JsonSerializer<byte[]>() {
@Override
@@ -247,6 +266,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("\"0123456789\"", json);
}
+ @Test
public void testCustomByteArrayDeserializerAndInstanceCreator() {
GsonBuilder gsonBuilder = new GsonBuilder().registerTypeAdapter(byte[].class,
new JsonDeserializer<byte[]>() {
@@ -305,6 +325,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForCollectionElementSerializationWithType() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -318,6 +339,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForCollectionElementSerialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -330,6 +352,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForCollectionElementDeserialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -343,6 +366,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForMapElementSerializationWithType() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -356,6 +380,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForMapElementSerialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -368,6 +393,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 70
+ @Test
public void testCustomAdapterInvokedForMapElementDeserialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(StringHolder.class, new StringHolderTypeAdapter())
@@ -380,6 +406,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("Tomaw", foo.part2);
}
+ @Test
public void testEnsureCustomSerializerNotInvokedForNullValues() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(DataHolder.class, new DataHolderSerializer())
@@ -389,6 +416,7 @@ public class CustomTypeAdaptersTest extends TestCase {
assertEquals("{\"wrappedData\":{\"myData\":\"abc\"}}", json);
}
+ @Test
public void testEnsureCustomDeserializerNotInvokedForNullValues() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(DataHolder.class, new DataHolderDeserializer())
@@ -399,6 +427,7 @@ public class CustomTypeAdaptersTest extends TestCase {
}
// Test created from Issue 352
+ @Test
public void testRegisterHierarchyAdapterForDate() {
Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Date.class, new DateTypeAdapter())
diff --git a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
index 218c97ab..623bc55c 100644
--- a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
@@ -15,6 +15,11 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
@@ -54,7 +59,9 @@ import java.util.Set;
import java.util.TimeZone;
import java.util.TreeSet;
import java.util.UUID;
-import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional test for Json serialization and deserialization for common classes for which default
@@ -63,14 +70,13 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class DefaultTypeAdaptersTest extends TestCase {
+public class DefaultTypeAdaptersTest {
private Gson gson;
private TimeZone oldTimeZone;
private Locale oldLocale;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
this.oldTimeZone = TimeZone.getDefault();
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
this.oldLocale = Locale.getDefault();
@@ -78,13 +84,13 @@ public class DefaultTypeAdaptersTest extends TestCase {
gson = new Gson();
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
TimeZone.setDefault(oldTimeZone);
Locale.setDefault(oldLocale);
- super.tearDown();
}
+ @Test
public void testClassSerialization() {
try {
gson.toJson(String.class);
@@ -96,6 +102,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("\"java.lang.String\"", gson.toJson(String.class));
}
+ @Test
public void testClassDeserialization() {
try {
gson.fromJson("String.class", String.class.getClass());
@@ -107,12 +114,14 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(String.class, gson.fromJson("java.lang.String", Class.class));
}
+ @Test
public void testUrlSerialization() throws Exception {
String urlValue = "http://google.com/";
URL url = new URL(urlValue);
assertEquals("\"http://google.com/\"", gson.toJson(url));
}
+ @Test
public void testUrlDeserialization() {
String urlValue = "http://google.com/";
String json = "'http:\\/\\/google.com\\/'";
@@ -123,11 +132,13 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(urlValue, target.toExternalForm());
}
+ @Test
public void testUrlNullSerialization() throws Exception {
ClassWithUrlField target = new ClassWithUrlField();
assertEquals("{}", gson.toJson(target));
}
+ @Test
public void testUrlNullDeserialization() {
String json = "{}";
ClassWithUrlField target = gson.fromJson(json, ClassWithUrlField.class);
@@ -138,12 +149,14 @@ public class DefaultTypeAdaptersTest extends TestCase {
URL url;
}
+ @Test
public void testUriSerialization() throws Exception {
String uriValue = "http://google.com/";
URI uri = new URI(uriValue);
assertEquals("\"http://google.com/\"", gson.toJson(uri));
}
+ @Test
public void testUriDeserialization() {
String uriValue = "http://google.com/";
String json = '"' + uriValue + '"';
@@ -151,6 +164,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(uriValue, target.toASCIIString());
}
+ @Test
public void testNullSerialization() throws Exception {
testNullSerializationAndDeserialization(Boolean.class);
testNullSerializationAndDeserialization(Byte.class);
@@ -191,12 +205,14 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(null, gson.fromJson("null", c));
}
+ @Test
public void testUuidSerialization() throws Exception {
String uuidValue = "c237bec1-19ef-4858-a98e-521cf0aad4c0";
UUID uuid = UUID.fromString(uuidValue);
assertEquals('"' + uuidValue + '"', gson.toJson(uuid));
}
+ @Test
public void testUuidDeserialization() {
String uuidValue = "c237bec1-19ef-4858-a98e-521cf0aad4c0";
String json = '"' + uuidValue + '"';
@@ -204,34 +220,40 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(uuidValue, target.toString());
}
+ @Test
public void testLocaleSerializationWithLanguage() {
Locale target = new Locale("en");
assertEquals("\"en\"", gson.toJson(target));
}
+ @Test
public void testLocaleDeserializationWithLanguage() {
String json = "\"en\"";
Locale locale = gson.fromJson(json, Locale.class);
assertEquals("en", locale.getLanguage());
}
+ @Test
public void testLocaleSerializationWithLanguageCountry() {
Locale target = Locale.CANADA_FRENCH;
assertEquals("\"fr_CA\"", gson.toJson(target));
}
+ @Test
public void testLocaleDeserializationWithLanguageCountry() {
String json = "\"fr_CA\"";
Locale locale = gson.fromJson(json, Locale.class);
assertEquals(Locale.CANADA_FRENCH, locale);
}
+ @Test
public void testLocaleSerializationWithLanguageCountryVariant() {
Locale target = new Locale("de", "DE", "EURO");
String json = gson.toJson(target);
assertEquals("\"de_DE_EURO\"", json);
}
+ @Test
public void testLocaleDeserializationWithLanguageCountryVariant() {
String json = "\"de_DE_EURO\"";
Locale locale = gson.fromJson(json, Locale.class);
@@ -240,6 +262,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("EURO", locale.getVariant());
}
+ @Test
public void testBigDecimalFieldSerialization() {
ClassWithBigDecimal target = new ClassWithBigDecimal("-122.01e-21");
String json = gson.toJson(target);
@@ -247,6 +270,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(target.value, new BigDecimal(actual));
}
+ @Test
public void testBigDecimalFieldDeserialization() {
ClassWithBigDecimal expected = new ClassWithBigDecimal("-122.01e-21");
String json = expected.getExpectedJson();
@@ -254,6 +278,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(expected.value, actual.value);
}
+ @Test
public void testBadValueForBigDecimalDeserialization() {
try {
gson.fromJson("{\"value\"=1.5e-1.0031}", ClassWithBigDecimal.class);
@@ -261,12 +286,14 @@ public class DefaultTypeAdaptersTest extends TestCase {
} catch (JsonParseException expected) { }
}
+ @Test
public void testBigIntegerFieldSerialization() {
ClassWithBigInteger target = new ClassWithBigInteger("23232323215323234234324324324324324324");
String json = gson.toJson(target);
assertEquals(target.getExpectedJson(), json);
}
+ @Test
public void testBigIntegerFieldDeserialization() {
ClassWithBigInteger expected = new ClassWithBigInteger("879697697697697697697697697697697697");
String json = expected.getExpectedJson();
@@ -274,6 +301,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(expected.value, actual.value);
}
+ @Test
public void testOverrideBigIntegerTypeAdapter() throws Exception {
gson = new GsonBuilder()
.registerTypeAdapter(BigInteger.class, new NumberAsStringAdapter(BigInteger.class))
@@ -282,6 +310,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(new BigInteger("123"), gson.fromJson("\"123\"", BigInteger.class));
}
+ @Test
public void testOverrideBigDecimalTypeAdapter() throws Exception {
gson = new GsonBuilder()
.registerTypeAdapter(BigDecimal.class, new NumberAsStringAdapter(BigDecimal.class))
@@ -290,6 +319,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(new BigDecimal("1.1"), gson.fromJson("\"1.1\"", BigDecimal.class));
}
+ @Test
public void testSetSerialization() throws Exception {
Gson gson = new Gson();
HashSet<String> s = new HashSet<>();
@@ -301,6 +331,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[\"blah\"]", json);
}
+ @Test
public void testBitSetSerialization() throws Exception {
Gson gson = new Gson();
BitSet bits = new BitSet();
@@ -311,6 +342,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[0,1,0,1,1,1,0,0,0,1]", json);
}
+ @Test
public void testBitSetDeserialization() throws Exception {
BitSet expected = new BitSet();
expected.set(0);
@@ -345,6 +377,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testDefaultDateSerialization() {
Date now = new Date(1315806903103L);
String json = gson.toJson(now);
@@ -355,6 +388,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testDefaultDateDeserialization() {
String json = "'Dec 13, 2009 07:18:02 AM'";
Date extracted = gson.fromJson(json, Date.class);
@@ -378,6 +412,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(seconds, date.getSeconds());
}
+ @Test
public void testDefaultDateSerializationUsingBuilder() throws Exception {
Gson gson = new GsonBuilder().create();
Date now = new Date(1315806903103L);
@@ -389,6 +424,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testDefaultDateDeserializationUsingBuilder() throws Exception {
Gson gson = new GsonBuilder().create();
Date now = new Date(1315806903103L);
@@ -397,6 +433,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(now.toString(), extracted.toString());
}
+ @Test
public void testDefaultCalendarSerialization() throws Exception {
Gson gson = new GsonBuilder().create();
String json = gson.toJson(Calendar.getInstance());
@@ -408,6 +445,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertTrue(json.contains("second"));
}
+ @Test
public void testDefaultCalendarDeserialization() throws Exception {
Gson gson = new GsonBuilder().create();
String json = "{year:2009,month:2,dayOfMonth:11,hourOfDay:14,minute:29,second:23}";
@@ -420,6 +458,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(23, cal.get(Calendar.SECOND));
}
+ @Test
public void testDefaultGregorianCalendarSerialization() throws Exception {
Gson gson = new GsonBuilder().create();
GregorianCalendar cal = new GregorianCalendar();
@@ -432,6 +471,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertTrue(json.contains("second"));
}
+ @Test
public void testDefaultGregorianCalendarDeserialization() throws Exception {
Gson gson = new GsonBuilder().create();
String json = "{year:2009,month:2,dayOfMonth:11,hourOfDay:14,minute:29,second:23}";
@@ -444,6 +484,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(23, cal.get(Calendar.SECOND));
}
+ @Test
public void testDateSerializationWithPattern() throws Exception {
String pattern = "yyyy-MM-dd";
Gson gson = new GsonBuilder().setDateFormat(DateFormat.FULL).setDateFormat(pattern).create();
@@ -453,6 +494,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
@SuppressWarnings("deprecation")
+ @Test
public void testDateDeserializationWithPattern() throws Exception {
String pattern = "yyyy-MM-dd";
Gson gson = new GsonBuilder().setDateFormat(DateFormat.FULL).setDateFormat(pattern).create();
@@ -464,6 +506,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(now.getDay(), extracted.getDay());
}
+ @Test
public void testDateSerializationWithPatternNotOverridenByTypeAdapter() throws Exception {
String pattern = "yyyy-MM-dd";
Gson gson = new GsonBuilder()
@@ -483,6 +526,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
// http://code.google.com/p/google-gson/issues/detail?id=230
+ @Test
public void testDateSerializationInCollection() throws Exception {
Type listOfDates = new TypeToken<List<Date>>() {}.getType();
TimeZone defaultTimeZone = TimeZone.getDefault();
@@ -501,6 +545,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testJsonPrimitiveSerialization() {
assertEquals("5", gson.toJson(new JsonPrimitive(5), JsonElement.class));
assertEquals("true", gson.toJson(new JsonPrimitive(true), JsonElement.class));
@@ -508,6 +553,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("\"a\"", gson.toJson(new JsonPrimitive('a'), JsonElement.class));
}
+ @Test
public void testJsonPrimitiveDeserialization() {
assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonElement.class));
assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonPrimitive.class));
@@ -519,16 +565,19 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(new JsonPrimitive('a'), gson.fromJson("\"a\"", JsonPrimitive.class));
}
+ @Test
public void testJsonNullSerialization() {
assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonElement.class));
assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonNull.class));
}
+ @Test
public void testNullJsonElementSerialization() {
assertEquals("null", gson.toJson(null, JsonElement.class));
assertEquals("null", gson.toJson(null, JsonNull.class));
}
+ @Test
public void testJsonArraySerialization() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive(1));
@@ -537,6 +586,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[1,2,3]", gson.toJson(array, JsonElement.class));
}
+ @Test
public void testJsonArrayDeserialization() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive(1));
@@ -548,6 +598,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(array, gson.fromJson(json, JsonArray.class));
}
+ @Test
public void testJsonObjectSerialization() {
JsonObject object = new JsonObject();
object.add("foo", new JsonPrimitive(1));
@@ -555,6 +606,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("{\"foo\":1,\"bar\":2}", gson.toJson(object, JsonElement.class));
}
+ @Test
public void testJsonObjectDeserialization() {
JsonObject object = new JsonObject();
object.add("foo", new JsonPrimitive(1));
@@ -568,11 +620,13 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(object, actualObj);
}
+ @Test
public void testJsonNullDeserialization() {
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonElement.class));
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonNull.class));
}
+ @Test
public void testJsonElementTypeMismatch() {
try {
gson.fromJson("\"abc\"", JsonObject.class);
@@ -603,6 +657,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
}
}
+ @Test
public void testPropertiesSerialization() {
Properties props = new Properties();
props.setProperty("foo", "bar");
@@ -611,12 +666,14 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testPropertiesDeserialization() {
String json = "{foo:'bar'}";
Properties props = gson.fromJson(json, Properties.class);
assertEquals("bar", props.getProperty("foo"));
}
+ @Test
public void testTreeSetSerialization() {
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Value1");
@@ -624,6 +681,7 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[\"Value1\"]", json);
}
+ @Test
public void testTreeSetDeserialization() {
String json = "['Value1']";
Type type = new TypeToken<TreeSet<String>>() {}.getType();
@@ -631,23 +689,27 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertTrue(treeSet.contains("Value1"));
}
+ @Test
public void testStringBuilderSerialization() {
StringBuilder sb = new StringBuilder("abc");
String json = gson.toJson(sb);
assertEquals("\"abc\"", json);
}
+ @Test
public void testStringBuilderDeserialization() {
StringBuilder sb = gson.fromJson("'abc'", StringBuilder.class);
assertEquals("abc", sb.toString());
}
+ @Test
public void testStringBufferSerialization() {
StringBuffer sb = new StringBuffer("abc");
String json = gson.toJson(sb);
assertEquals("\"abc\"", json);
}
+ @Test
public void testStringBufferDeserialization() {
StringBuffer sb = gson.fromJson("'abc'", StringBuffer.class);
assertEquals("abc", sb.toString());
diff --git a/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java b/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
index 87ee81e5..68e7c363 100644
--- a/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/DelegateTypeAdapterTest.java
@@ -15,11 +15,7 @@
*/
package com.google.gson.functional;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -29,26 +25,31 @@ import com.google.gson.common.TestTypes.BagOfPrimitives;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for {@link Gson#getDelegateAdapter(TypeAdapterFactory, TypeToken)} method.
*
* @author Inderjeet Singh
*/
-public class DelegateTypeAdapterTest extends TestCase {
+public class DelegateTypeAdapterTest {
private StatsTypeAdapterFactory stats;
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
stats = new StatsTypeAdapterFactory();
gson = new GsonBuilder()
.registerTypeAdapterFactory(stats)
.create();
}
+ @Test
public void testDelegateInvoked() {
List<BagOfPrimitives> bags = new ArrayList<>();
for (int i = 0; i < 10; ++i) {
@@ -61,6 +62,7 @@ public class DelegateTypeAdapterTest extends TestCase {
assertEquals(51, stats.numWrites);
}
+ @Test
public void testDelegateInvokedOnStrings() {
String[] bags = {"1", "2", "3", "4"};
String json = gson.toJson(bags);
diff --git a/gson/src/test/java/com/google/gson/functional/EnumTest.java b/gson/src/test/java/com/google/gson/functional/EnumTest.java
index b46f80b8..7bb306d0 100644
--- a/gson/src/test/java/com/google/gson/functional/EnumTest.java
+++ b/gson/src/test/java/com/google/gson/functional/EnumTest.java
@@ -16,6 +16,11 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -36,7 +41,8 @@ import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Java 5.0 enums.
@@ -44,26 +50,28 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class EnumTest extends TestCase {
+public class EnumTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testTopLevelEnumSerialization() throws Exception {
String result = gson.toJson(MyEnum.VALUE1);
assertEquals('"' + MyEnum.VALUE1.toString() + '"', result);
}
+ @Test
public void testTopLevelEnumDeserialization() throws Exception {
MyEnum result = gson.fromJson('"' + MyEnum.VALUE1.toString() + '"', MyEnum.class);
assertEquals(MyEnum.VALUE1, result);
}
+ @Test
public void testCollectionOfEnumsSerialization() {
Type type = new TypeToken<Collection<MyEnum>>() {}.getType();
Collection<MyEnum> target = new ArrayList<>();
@@ -76,6 +84,7 @@ public class EnumTest extends TestCase {
assertEquals(expectedJson, actualJson);
}
+ @Test
public void testCollectionOfEnumsDeserialization() {
Type type = new TypeToken<Collection<MyEnum>>() {}.getType();
String json = "[\"VALUE1\",\"VALUE2\"]";
@@ -84,11 +93,13 @@ public class EnumTest extends TestCase {
MoreAsserts.assertContains(target, MyEnum.VALUE2);
}
+ @Test
public void testClassWithEnumFieldSerialization() throws Exception {
ClassWithEnumFields target = new ClassWithEnumFields();
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testClassWithEnumFieldDeserialization() throws Exception {
String json = "{value1:'VALUE1',value2:'VALUE2'}";
ClassWithEnumFields target = gson.fromJson(json, ClassWithEnumFields.class);
@@ -111,6 +122,7 @@ public class EnumTest extends TestCase {
/**
* Test for issue 226.
*/
+ @Test
public void testEnumSubclass() {
assertFalse(Roshambo.class == Roshambo.ROCK.getClass());
assertEquals("\"ROCK\"", gson.toJson(Roshambo.ROCK));
@@ -120,6 +132,7 @@ public class EnumTest extends TestCase {
gson.fromJson("[\"ROCK\",\"PAPER\",\"SCISSORS\"]", new TypeToken<Set<Roshambo>>() {}.getType()));
}
+ @Test
public void testEnumSubclassWithRegisteredTypeAdapter() {
gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Roshambo.class, new MyEnumTypeAdapter())
@@ -132,6 +145,7 @@ public class EnumTest extends TestCase {
gson.fromJson("[\"123ROCK\",\"123PAPER\",\"123SCISSORS\"]", new TypeToken<Set<Roshambo>>() {}.getType()));
}
+ @Test
public void testEnumSubclassAsParameterizedType() {
Collection<Roshambo> list = new ArrayList<>();
list.add(Roshambo.ROCK);
@@ -146,11 +160,13 @@ public class EnumTest extends TestCase {
MoreAsserts.assertContains(actualJsonList, Roshambo.PAPER);
}
+ @Test
public void testEnumCaseMapping() {
assertEquals(Gender.MALE, gson.fromJson("\"boy\"", Gender.class));
assertEquals("\"boy\"", gson.toJson(Gender.MALE, Gender.class));
}
+ @Test
public void testEnumSet() {
EnumSet<Roshambo> foo = EnumSet.of(Roshambo.ROCK, Roshambo.PAPER);
String json = gson.toJson(foo);
@@ -163,6 +179,7 @@ public class EnumTest extends TestCase {
assertFalse(bar.contains(Roshambo.SCISSORS));
}
+ @Test
public void testEnumMap() throws Exception {
EnumMap<MyEnum, String> map = new EnumMap<>(MyEnum.class);
map.put(MyEnum.VALUE1, "test");
@@ -215,6 +232,7 @@ public class EnumTest extends TestCase {
FEMALE
}
+ @Test
public void testEnumClassWithFields() {
assertEquals("\"RED\"", gson.toJson(Color.RED));
assertEquals("red", gson.fromJson("RED", Color.class).value);
@@ -231,6 +249,7 @@ public class EnumTest extends TestCase {
}
}
+ @Test
public void testEnumToStringRead() {
// Should still be able to read constant name
assertEquals(CustomToString.A, gson.fromJson("\"A\"", CustomToString.class));
@@ -253,6 +272,7 @@ public class EnumTest extends TestCase {
* Test that enum constant names have higher precedence than {@code toString()}
* result.
*/
+ @Test
public void testEnumToStringReadInterchanged() {
assertEquals(InterchangedToString.A, gson.fromJson("\"A\"", InterchangedToString.class));
assertEquals(InterchangedToString.B, gson.fromJson("\"B\"", InterchangedToString.class));
diff --git a/gson/src/test/java/com/google/gson/functional/EnumWithObfuscatedTest.java b/gson/src/test/java/com/google/gson/functional/EnumWithObfuscatedTest.java
index 080b81fa..373f0071 100644
--- a/gson/src/test/java/com/google/gson/functional/EnumWithObfuscatedTest.java
+++ b/gson/src/test/java/com/google/gson/functional/EnumWithObfuscatedTest.java
@@ -16,22 +16,24 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
-
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for enums with Proguard.
*
* @author Young Cha
*/
-public class EnumWithObfuscatedTest extends TestCase {
+public class EnumWithObfuscatedTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
@@ -43,6 +45,7 @@ public class EnumWithObfuscatedTest extends TestCase {
FEMALE
}
+ @Test
public void testEnumClassWithObfuscated() {
for (Gender enumConstant: Gender.class.getEnumConstants()) {
try {
diff --git a/gson/src/test/java/com/google/gson/functional/EscapingTest.java b/gson/src/test/java/com/google/gson/functional/EscapingTest.java
index 053fd9a2..f8c6f4fe 100644
--- a/gson/src/test/java/com/google/gson/functional/EscapingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/EscapingTest.java
@@ -16,12 +16,17 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.common.TestTypes.BagOfPrimitives;
import java.util.ArrayList;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Performs some functional test involving JSON output escaping.
@@ -29,15 +34,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class EscapingTest extends TestCase {
+public class EscapingTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testEscapingQuotesInStringArray() throws Exception {
String[] valueWithQuotes = { "beforeQuote\"afterQuote" };
String jsonRepresentation = gson.toJson(valueWithQuotes);
@@ -46,6 +51,7 @@ public class EscapingTest extends TestCase {
assertEquals(valueWithQuotes[0], target[0]);
}
+ @Test
public void testEscapeAllHtmlCharacters() {
List<String> strings = new ArrayList<>();
strings.add("<");
@@ -58,6 +64,7 @@ public class EscapingTest extends TestCase {
gson.toJson(strings));
}
+ @Test
public void testEscapingObjectFields() throws Exception {
BagOfPrimitives objWithPrimitives = new BagOfPrimitives(1L, 1, true, "test with\" <script>");
String jsonRepresentation = gson.toJson(objWithPrimitives);
@@ -69,6 +76,7 @@ public class EscapingTest extends TestCase {
assertEquals(objWithPrimitives.getExpectedJson(), expectedObject.getExpectedJson());
}
+ @Test
public void testGsonAcceptsEscapedAndNonEscapedJsonDeserialization() throws Exception {
Gson escapeHtmlGson = new GsonBuilder().create();
Gson noEscapeHtmlGson = new GsonBuilder().disableHtmlEscaping().create();
@@ -82,6 +90,7 @@ public class EscapingTest extends TestCase {
assertEquals(target, escapeHtmlGson.fromJson(nonEscapedJsonForm, BagOfPrimitives.class));
}
+ @Test
public void testGsonDoubleDeserialization() {
BagOfPrimitives expected = new BagOfPrimitives(3L, 4, true, "value1");
String json = gson.toJson(gson.toJson(expected));
diff --git a/gson/src/test/java/com/google/gson/functional/ExclusionStrategyFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/ExclusionStrategyFunctionalTest.java
index 2eca8bb4..4091d26d 100644
--- a/gson/src/test/java/com/google/gson/functional/ExclusionStrategyFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ExclusionStrategyFunctionalTest.java
@@ -16,6 +16,11 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
@@ -26,7 +31,8 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Performs some functional tests when Gson is instantiated with some common user defined
@@ -35,7 +41,7 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class ExclusionStrategyFunctionalTest extends TestCase {
+public class ExclusionStrategyFunctionalTest {
private static final ExclusionStrategy EXCLUDE_SAMPLE_OBJECT_FOR_TEST = new ExclusionStrategy() {
@Override public boolean shouldSkipField(FieldAttributes f) {
return false;
@@ -47,12 +53,12 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
private SampleObjectForTest src;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
src = new SampleObjectForTest();
}
+ @Test
public void testExclusionStrategySerialization() throws Exception {
Gson gson = createGson(new MyExclusionStrategy(String.class), true);
String json = gson.toJson(src);
@@ -61,6 +67,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertTrue(json.contains("\"longField\""));
}
+ @Test
public void testExclusionStrategySerializationDoesNotImpactDeserialization() {
String json = "{\"annotatedField\":1,\"stringField\":\"x\",\"longField\":2}";
Gson gson = createGson(new MyExclusionStrategy(String.class), true);
@@ -70,6 +77,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertEquals(2, value.longField);
}
+ @Test
public void testExclusionStrategyDeserialization() throws Exception {
Gson gson = createGson(new MyExclusionStrategy(String.class), false);
JsonObject json = new JsonObject();
@@ -85,6 +93,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertEquals(src.stringField, target.stringField);
}
+ @Test
public void testExclusionStrategySerializationDoesNotImpactSerialization() throws Exception {
Gson gson = createGson(new MyExclusionStrategy(String.class), false);
String json = gson.toJson(src);
@@ -93,6 +102,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertTrue(json.contains("\"longField\""));
}
+ @Test
public void testExclusionStrategyWithMode() throws Exception {
SampleObjectForTest testObj = new SampleObjectForTest(
src.annotatedField + 5, src.stringField + "blah,blah",
@@ -112,6 +122,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertEquals(src.stringField, target.stringField);
}
+ @Test
public void testExcludeTopLevelClassSerialization() {
Gson gson = new GsonBuilder()
.addSerializationExclusionStrategy(EXCLUDE_SAMPLE_OBJECT_FOR_TEST)
@@ -119,6 +130,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertEquals("null", gson.toJson(new SampleObjectForTest(), SampleObjectForTest.class));
}
+ @Test
public void testExcludeTopLevelClassSerializationDoesNotImpactDeserialization() {
Gson gson = new GsonBuilder()
.addSerializationExclusionStrategy(EXCLUDE_SAMPLE_OBJECT_FOR_TEST)
@@ -130,6 +142,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertEquals(2, value.longField);
}
+ @Test
public void testExcludeTopLevelClassDeserialization() {
Gson gson = new GsonBuilder()
.addDeserializationExclusionStrategy(EXCLUDE_SAMPLE_OBJECT_FOR_TEST)
@@ -139,6 +152,7 @@ public class ExclusionStrategyFunctionalTest extends TestCase {
assertNull(value);
}
+ @Test
public void testExcludeTopLevelClassDeserializationDoesNotImpactSerialization() {
Gson gson = new GsonBuilder()
.addDeserializationExclusionStrategy(EXCLUDE_SAMPLE_OBJECT_FOR_TEST)
diff --git a/gson/src/test/java/com/google/gson/functional/ExposeFieldsTest.java b/gson/src/test/java/com/google/gson/functional/ExposeFieldsTest.java
index 0430ba49..c13c356e 100644
--- a/gson/src/test/java/com/google/gson/functional/ExposeFieldsTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ExposeFieldsTest.java
@@ -16,33 +16,37 @@
package com.google.gson.functional;
-import java.lang.reflect.Type;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
import com.google.gson.annotations.Expose;
-
-import junit.framework.TestCase;
+import java.lang.reflect.Type;
+import org.junit.Before;
+import org.junit.Test;
/**
* Unit tests for the regarding functional "@Expose" type tests.
*
* @author Joel Leitch
*/
-public class ExposeFieldsTest extends TestCase {
+public class ExposeFieldsTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeAdapter(SomeInterface.class, new SomeInterfaceInstanceCreator())
.create();
}
+ @Test
public void testNullExposeFieldSerialization() throws Exception {
ClassWithExposedFields object = new ClassWithExposedFields(null, 1);
String json = gson.toJson(object);
@@ -50,6 +54,7 @@ public class ExposeFieldsTest extends TestCase {
assertEquals(object.getExpectedJson(), json);
}
+ @Test
public void testArrayWithOneNullExposeFieldObjectSerialization() throws Exception {
ClassWithExposedFields object1 = new ClassWithExposedFields(1, 1);
ClassWithExposedFields object2 = new ClassWithExposedFields(null, 1);
@@ -66,11 +71,13 @@ public class ExposeFieldsTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testExposeAnnotationSerialization() throws Exception {
ClassWithExposedFields target = new ClassWithExposedFields(1, 2);
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testExposeAnnotationDeserialization() throws Exception {
String json = "{a:3,b:4,d:20.0}";
ClassWithExposedFields target = gson.fromJson(json, ClassWithExposedFields.class);
@@ -80,6 +87,7 @@ public class ExposeFieldsTest extends TestCase {
assertFalse(target.d == 20);
}
+ @Test
public void testNoExposedFieldSerialization() throws Exception {
ClassWithNoExposedFields obj = new ClassWithNoExposedFields();
String json = gson.toJson(obj);
@@ -87,6 +95,7 @@ public class ExposeFieldsTest extends TestCase {
assertEquals("{}", json);
}
+ @Test
public void testNoExposedFieldDeserialization() throws Exception {
String json = "{a:4,b:5}";
ClassWithNoExposedFields obj = gson.fromJson(json, ClassWithNoExposedFields.class);
@@ -95,6 +104,7 @@ public class ExposeFieldsTest extends TestCase {
assertEquals(1, obj.b);
}
+ @Test
public void testExposedInterfaceFieldSerialization() throws Exception {
String expected = "{\"interfaceField\":{}}";
ClassWithInterfaceField target = new ClassWithInterfaceField(new SomeObject());
@@ -103,6 +113,7 @@ public class ExposeFieldsTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testExposedInterfaceFieldDeserialization() throws Exception {
String json = "{\"interfaceField\":{}}";
ClassWithInterfaceField obj = gson.fromJson(json, ClassWithInterfaceField.class);
diff --git a/gson/src/test/java/com/google/gson/functional/FieldExclusionTest.java b/gson/src/test/java/com/google/gson/functional/FieldExclusionTest.java
index 080a8234..1411b9f7 100644
--- a/gson/src/test/java/com/google/gson/functional/FieldExclusionTest.java
+++ b/gson/src/test/java/com/google/gson/functional/FieldExclusionTest.java
@@ -16,10 +16,12 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Performs some functional testing to ensure GSON infrastructure properly serializes/deserializes
@@ -28,17 +30,17 @@ import junit.framework.TestCase;
*
* @author Joel Leitch
*/
-public class FieldExclusionTest extends TestCase {
+public class FieldExclusionTest {
private static final String VALUE = "blah_1234";
private Outer outer;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
outer = new Outer();
}
+ @Test
public void testDefaultInnerClassExclusion() throws Exception {
Gson gson = new Gson();
Outer.Inner target = outer.new Inner(VALUE);
@@ -51,6 +53,7 @@ public class FieldExclusionTest extends TestCase {
assertEquals(target.toJson(), result);
}
+ @Test
public void testInnerClassExclusion() throws Exception {
Gson gson = new GsonBuilder().disableInnerClassSerialization().create();
Outer.Inner target = outer.new Inner(VALUE);
@@ -58,6 +61,7 @@ public class FieldExclusionTest extends TestCase {
assertEquals("null", result);
}
+ @Test
public void testDefaultNestedStaticClassIncluded() throws Exception {
Gson gson = new Gson();
Outer.Inner target = outer.new Inner(VALUE);
diff --git a/gson/src/test/java/com/google/gson/functional/FieldNamingTest.java b/gson/src/test/java/com/google/gson/functional/FieldNamingTest.java
index 04ba7b7c..3da98964 100644
--- a/gson/src/test/java/com/google/gson/functional/FieldNamingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/FieldNamingTest.java
@@ -22,14 +22,16 @@ import static com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES;
import static com.google.gson.FieldNamingPolicy.UPPER_CAMEL_CASE;
import static com.google.gson.FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES;
import static com.google.gson.FieldNamingPolicy.UPPER_CASE_WITH_UNDERSCORES;
+import static org.junit.Assert.assertEquals;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
-import junit.framework.TestCase;
+import org.junit.Test;
-public final class FieldNamingTest extends TestCase {
+public final class FieldNamingTest {
+ @Test
public void testIdentity() {
Gson gson = getGsonWithNamingPolicy(IDENTITY);
assertEquals("{'lowerCamel':1,'UpperCamel':2,'_lowerCamelLeadingUnderscore':3," +
@@ -38,6 +40,7 @@ public final class FieldNamingTest extends TestCase {
gson.toJson(new TestNames()).replace('\"', '\''));
}
+ @Test
public void testUpperCamelCase() {
Gson gson = getGsonWithNamingPolicy(UPPER_CAMEL_CASE);
assertEquals("{'LowerCamel':1,'UpperCamel':2,'_LowerCamelLeadingUnderscore':3," +
@@ -46,6 +49,7 @@ public final class FieldNamingTest extends TestCase {
gson.toJson(new TestNames()).replace('\"', '\''));
}
+ @Test
public void testUpperCamelCaseWithSpaces() {
Gson gson = getGsonWithNamingPolicy(UPPER_CAMEL_CASE_WITH_SPACES);
assertEquals("{'Lower Camel':1,'Upper Camel':2,'_Lower Camel Leading Underscore':3," +
@@ -54,6 +58,7 @@ public final class FieldNamingTest extends TestCase {
gson.toJson(new TestNames()).replace('\"', '\''));
}
+ @Test
public void testUpperCaseWithUnderscores() {
Gson gson = getGsonWithNamingPolicy(UPPER_CASE_WITH_UNDERSCORES);
assertEquals("{'LOWER_CAMEL':1,'UPPER_CAMEL':2,'_LOWER_CAMEL_LEADING_UNDERSCORE':3," +
@@ -62,6 +67,7 @@ public final class FieldNamingTest extends TestCase {
gson.toJson(new TestNames()).replace('\"', '\''));
}
+ @Test
public void testLowerCaseWithUnderscores() {
Gson gson = getGsonWithNamingPolicy(LOWER_CASE_WITH_UNDERSCORES);
assertEquals("{'lower_camel':1,'upper_camel':2,'_lower_camel_leading_underscore':3," +
@@ -70,6 +76,7 @@ public final class FieldNamingTest extends TestCase {
gson.toJson(new TestNames()).replace('\"', '\''));
}
+ @Test
public void testLowerCaseWithDashes() {
Gson gson = getGsonWithNamingPolicy(LOWER_CASE_WITH_DASHES);
assertEquals("{'lower-camel':1,'upper-camel':2,'_lower-camel-leading-underscore':3," +
diff --git a/gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java b/gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java
index daa7aa48..251c8f78 100644
--- a/gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java
+++ b/gson/src/test/java/com/google/gson/functional/GsonVersionDiagnosticsTest.java
@@ -15,32 +15,32 @@
*/
package com.google.gson.functional;
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
-
-import junit.framework.TestCase;
+import java.io.IOException;
+import java.util.regex.Pattern;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests to validate printing of Gson version on AssertionErrors
*
* @author Inderjeet Singh
*/
-public class GsonVersionDiagnosticsTest extends TestCase {
- private static final Pattern GSON_VERSION_PATTERN = Pattern.compile("(\\(GSON \\d\\.\\d+(\\.\\d)?)(?:[-.][A-Z]+)?\\)$");
+public class GsonVersionDiagnosticsTest {
+ // We require a patch number, even if it is .0, consistent with https://semver.org/#spec-item-2.
+ private static final Pattern GSON_VERSION_PATTERN =
+ Pattern.compile("(\\(GSON \\d\\.\\d+\\.\\d)(?:[-.][A-Z]+)?\\)$");
private Gson gson;
@Before
- @Override
public void setUp() {
gson = new GsonBuilder().registerTypeAdapter(TestType.class, new TypeAdapter<TestType>() {
@Override public void write(JsonWriter out, TestType value) {
diff --git a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
index 84de37de..a760cb76 100644
--- a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
@@ -15,6 +15,11 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
@@ -26,9 +31,6 @@ import com.google.gson.common.TestTypes.ClassWithBaseCollectionField;
import com.google.gson.common.TestTypes.ClassWithBaseField;
import com.google.gson.common.TestTypes.Nested;
import com.google.gson.common.TestTypes.Sub;
-
-import junit.framework.TestCase;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
@@ -37,6 +39,8 @@ import java.util.Queue;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json serialization and deserialization of classes with
@@ -45,21 +49,22 @@ import java.util.TreeSet;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class InheritanceTest extends TestCase {
+public class InheritanceTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testSubClassSerialization() throws Exception {
SubTypeOfNested target = new SubTypeOfNested(new BagOfPrimitives(10, 20, false, "stringValue"),
new BagOfPrimitives(30, 40, true, "stringValue"));
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testSubClassDeserialization() throws Exception {
String json = "{\"value\":5,\"primitive1\":{\"longValue\":10,\"intValue\":20,"
+ "\"booleanValue\":false,\"stringValue\":\"stringValue\"},\"primitive2\":"
@@ -69,6 +74,7 @@ public class InheritanceTest extends TestCase {
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testClassWithBaseFieldSerialization() {
ClassWithBaseField sub = new ClassWithBaseField(new Sub());
JsonObject json = (JsonObject) gson.toJsonTree(sub);
@@ -76,6 +82,7 @@ public class InheritanceTest extends TestCase {
assertEquals(Sub.SUB_NAME, base.getAsJsonObject().get(Sub.SUB_FIELD_KEY).getAsString());
}
+ @Test
public void testClassWithBaseArrayFieldSerialization() {
Base[] baseClasses = new Base[]{ new Sub(), new Sub()};
ClassWithBaseArrayField sub = new ClassWithBaseArrayField(baseClasses);
@@ -86,6 +93,7 @@ public class InheritanceTest extends TestCase {
}
}
+ @Test
public void testClassWithBaseCollectionFieldSerialization() {
Collection<Base> baseClasses = new ArrayList<>();
baseClasses.add(new Sub());
@@ -98,18 +106,21 @@ public class InheritanceTest extends TestCase {
}
}
+ @Test
public void testBaseSerializedAsSub() {
Base base = new Sub();
JsonObject json = gson.toJsonTree(base).getAsJsonObject();
assertEquals(Sub.SUB_NAME, json.get(Sub.SUB_FIELD_KEY).getAsString());
}
+ @Test
public void testBaseSerializedAsSubForToJsonMethod() {
Base base = new Sub();
String json = gson.toJson(base);
assertTrue(json.contains(Sub.SUB_NAME));
}
+ @Test
public void testBaseSerializedAsBaseWhenSpecifiedWithExplicitType() {
Base base = new Sub();
JsonObject json = gson.toJsonTree(base, Base.class).getAsJsonObject();
@@ -117,6 +128,7 @@ public class InheritanceTest extends TestCase {
assertNull(json.get(Sub.SUB_FIELD_KEY));
}
+ @Test
public void testBaseSerializedAsBaseWhenSpecifiedWithExplicitTypeForToJsonMethod() {
Base base = new Sub();
String json = gson.toJson(base, Base.class);
@@ -124,12 +136,14 @@ public class InheritanceTest extends TestCase {
assertFalse(json.contains(Sub.SUB_FIELD_KEY));
}
+ @Test
public void testBaseSerializedAsSubWhenSpecifiedWithExplicitType() {
Base base = new Sub();
JsonObject json = gson.toJsonTree(base, Sub.class).getAsJsonObject();
assertEquals(Sub.SUB_NAME, json.get(Sub.SUB_FIELD_KEY).getAsString());
}
+ @Test
public void testBaseSerializedAsSubWhenSpecifiedWithExplicitTypeForToJsonMethod() {
Base base = new Sub();
String json = gson.toJson(base, Sub.class);
@@ -150,6 +164,7 @@ public class InheritanceTest extends TestCase {
}
}
+ @Test
public void testSubInterfacesOfCollectionSerialization() throws Exception {
List<Integer> list = new LinkedList<>();
list.add(0);
@@ -176,6 +191,7 @@ public class InheritanceTest extends TestCase {
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testSubInterfacesOfCollectionDeserialization() throws Exception {
String json = "{\"list\":[0,1,2,3],\"queue\":[0,1,2,3],\"set\":[0.1,0.2,0.3,0.4],"
+ "\"sortedSet\":[\"a\",\"b\",\"c\",\"d\"]"
diff --git a/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java b/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
index 3ed60327..7a0ecaa2 100644
--- a/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InstanceCreatorTest.java
@@ -16,6 +16,10 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
@@ -28,7 +32,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
-import junit.framework.TestCase;
+import org.junit.Test;
/**
* Functional Test exercising custom serialization only. When test applies to both
@@ -36,8 +40,9 @@ import junit.framework.TestCase;
*
* @author Inderjeet Singh
*/
-public class InstanceCreatorTest extends TestCase {
+public class InstanceCreatorTest {
+ @Test
public void testInstanceCreatorReturnsBaseType() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new InstanceCreator<Base>() {
@@ -51,6 +56,7 @@ public class InstanceCreatorTest extends TestCase {
assertEquals("BaseRevised", base.baseName);
}
+ @Test
public void testInstanceCreatorReturnsSubTypeForTopLevelObject() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new InstanceCreator<Base>() {
@@ -69,6 +75,7 @@ public class InstanceCreatorTest extends TestCase {
assertEquals(Sub.SUB_NAME, sub.subName);
}
+ @Test
public void testInstanceCreatorReturnsSubTypeForField() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Base.class, new InstanceCreator<Base>() {
@@ -84,6 +91,7 @@ public class InstanceCreatorTest extends TestCase {
}
// This regressed in Gson 2.0 and 2.1
+ @Test
public void testInstanceCreatorForCollectionType() {
@SuppressWarnings("serial")
class SubArrayList<T> extends ArrayList<T> {}
@@ -101,6 +109,7 @@ public class InstanceCreatorTest extends TestCase {
}
@SuppressWarnings("unchecked")
+ @Test
public void testInstanceCreatorForParametrizedType() throws Exception {
@SuppressWarnings("serial")
class SubTreeSet<T> extends TreeSet<T> {}
diff --git a/gson/src/test/java/com/google/gson/functional/InterfaceTest.java b/gson/src/test/java/com/google/gson/functional/InterfaceTest.java
index 6851f1e9..e94885d8 100644
--- a/gson/src/test/java/com/google/gson/functional/InterfaceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InterfaceTest.java
@@ -16,9 +16,11 @@
package com.google.gson.functional;
-import com.google.gson.Gson;
+import static org.junit.Assert.assertEquals;
-import junit.framework.TestCase;
+import com.google.gson.Gson;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests involving interfaces.
@@ -26,23 +28,24 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class InterfaceTest extends TestCase {
+public class InterfaceTest {
private static final String OBJ_JSON = "{\"someStringValue\":\"StringValue\"}";
private Gson gson;
private TestObject obj;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
obj = new TestObject("StringValue");
}
+ @Test
public void testSerializingObjectImplementingInterface() throws Exception {
assertEquals(OBJ_JSON, gson.toJson(obj));
}
+ @Test
public void testSerializingInterfaceObjectField() throws Exception {
TestObjectWrapper objWrapper = new TestObjectWrapper(obj);
assertEquals("{\"obj\":" + OBJ_JSON + "}", gson.toJson(objWrapper));
diff --git a/gson/src/test/java/com/google/gson/functional/InternationalizationTest.java b/gson/src/test/java/com/google/gson/functional/InternationalizationTest.java
index bdf6ea6e..bca48f1e 100644
--- a/gson/src/test/java/com/google/gson/functional/InternationalizationTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InternationalizationTest.java
@@ -16,23 +16,26 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for internationalized strings.
*
* @author Inderjeet Singh
*/
-public class InternationalizationTest extends TestCase {
+public class InternationalizationTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testStringsWithUnicodeChineseCharactersSerialization() throws Exception {
String target = "\u597d\u597d\u597d";
String json = gson.toJson(target);
@@ -40,6 +43,7 @@ public class InternationalizationTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testStringsWithUnicodeChineseCharactersDeserialization() throws Exception {
String expected = "\u597d\u597d\u597d";
String json = '"' + expected + '"';
@@ -47,11 +51,13 @@ public class InternationalizationTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testStringsWithUnicodeChineseCharactersEscapedDeserialization() throws Exception {
String actual = gson.fromJson("'\\u597d\\u597d\\u597d'", String.class);
assertEquals("\u597d\u597d\u597d", actual);
}
+ @Test
public void testSupplementaryUnicodeSerialization() throws Exception {
// Supplementary code point U+1F60A
String supplementaryCodePoint = new String(new int[] {0x1F60A}, 0, 1);
@@ -59,6 +65,7 @@ public class InternationalizationTest extends TestCase {
assertEquals('"' + supplementaryCodePoint + '"', json);
}
+ @Test
public void testSupplementaryUnicodeDeserialization() throws Exception {
// Supplementary code point U+1F60A
String supplementaryCodePoint = new String(new int[] {0x1F60A}, 0, 1);
@@ -66,6 +73,7 @@ public class InternationalizationTest extends TestCase {
assertEquals(supplementaryCodePoint, actual);
}
+ @Test
public void testSupplementaryUnicodeEscapedDeserialization() throws Exception {
// Supplementary code point U+1F60A
String supplementaryCodePoint = new String(new int[] {0x1F60A}, 0, 1);
diff --git a/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java b/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java
index 464892a3..f3a61df5 100644
--- a/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JavaUtilConcurrentAtomicTest.java
@@ -16,30 +16,32 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.LongSerializationPolicy;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicIntegerArray;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicLongArray;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.LongSerializationPolicy;
-
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional test for Json serialization and deserialization for classes in java.util.concurrent.atomic
*/
-public class JavaUtilConcurrentAtomicTest extends TestCase {
+public class JavaUtilConcurrentAtomicTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testAtomicBoolean() throws Exception {
AtomicBoolean target = gson.fromJson("true", AtomicBoolean.class);
assertTrue(target.get());
@@ -47,6 +49,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("true", json);
}
+ @Test
public void testAtomicInteger() throws Exception {
AtomicInteger target = gson.fromJson("10", AtomicInteger.class);
assertEquals(10, target.get());
@@ -54,6 +57,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("10", json);
}
+ @Test
public void testAtomicLong() throws Exception {
AtomicLong target = gson.fromJson("10", AtomicLong.class);
assertEquals(10, target.get());
@@ -61,6 +65,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("10", json);
}
+ @Test
public void testAtomicLongWithStringSerializationPolicy() throws Exception {
Gson gson = new GsonBuilder()
.setLongSerializationPolicy(LongSerializationPolicy.STRING)
@@ -71,6 +76,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("{\"value\":\"10\"}", json);
}
+ @Test
public void testAtomicIntegerArray() throws Exception {
AtomicIntegerArray target = gson.fromJson("[10, 13, 14]", AtomicIntegerArray.class);
assertEquals(3, target.length());
@@ -81,6 +87,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("[10,13,14]", json);
}
+ @Test
public void testAtomicLongArray() throws Exception {
AtomicLongArray target = gson.fromJson("[10, 13, 14]", AtomicLongArray.class);
assertEquals(3, target.length());
@@ -91,6 +98,7 @@ public class JavaUtilConcurrentAtomicTest extends TestCase {
assertEquals("[10,13,14]", json);
}
+ @Test
public void testAtomicLongArrayWithStringSerializationPolicy() throws Exception {
Gson gson = new GsonBuilder()
.setLongSerializationPolicy(LongSerializationPolicy.STRING)
diff --git a/gson/src/test/java/com/google/gson/functional/JavaUtilTest.java b/gson/src/test/java/com/google/gson/functional/JavaUtilTest.java
index 05209653..6f030ad6 100644
--- a/gson/src/test/java/com/google/gson/functional/JavaUtilTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JavaUtilTest.java
@@ -16,25 +16,28 @@
package com.google.gson.functional;
-import java.util.Currency;
-import java.util.Properties;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import com.google.gson.Gson;
-
-import junit.framework.TestCase;
+import java.util.Currency;
+import java.util.Properties;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional test for Json serialization and deserialization for classes in java.util
*/
-public class JavaUtilTest extends TestCase {
+public class JavaUtilTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testCurrency() throws Exception {
CurrencyHolder target = gson.fromJson("{'value':'USD'}", CurrencyHolder.class);
assertEquals("USD", target.value.getCurrencyCode());
@@ -51,6 +54,7 @@ public class JavaUtilTest extends TestCase {
Currency value;
}
+ @Test
public void testProperties() {
Properties props = gson.fromJson("{'a':'v1','b':'v2'}", Properties.class);
assertEquals("v1", props.getProperty("a"));
diff --git a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnClassesTest.java b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnClassesTest.java
index db939dcd..9b735765 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnClassesTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnClassesTest.java
@@ -16,6 +16,11 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -34,13 +39,14 @@ import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Locale;
-import junit.framework.TestCase;
+import org.junit.Test;
/**
* Functional tests for the {@link com.google.gson.annotations.JsonAdapter} annotation on classes.
*/
-public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
+public final class JsonAdapterAnnotationOnClassesTest {
+ @Test
public void testJsonAdapterInvoked() {
Gson gson = new Gson();
String json = gson.toJson(new A("bar"));
@@ -59,6 +65,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
assertEquals(Foo.BAZ, baz);
}
+ @Test
public void testJsonAdapterFactoryInvoked() {
Gson gson = new Gson();
String json = gson.toJson(new C("bar"));
@@ -67,6 +74,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
assertEquals("jsonAdapterFactory", c.value);
}
+ @Test
public void testRegisteredAdapterOverridesJsonAdapter() {
TypeAdapter<A> typeAdapter = new TypeAdapter<A>() {
@Override public void write(JsonWriter out, A value) throws IOException {
@@ -86,6 +94,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
/**
* The serializer overrides field adapter, but for deserializer the fieldAdapter is used.
*/
+ @Test
public void testRegisteredSerializerOverridesJsonAdapter() {
JsonSerializer<A> serializer = new JsonSerializer<A>() {
@Override public JsonElement serialize(A src, Type typeOfSrc,
@@ -105,6 +114,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
/**
* The deserializer overrides Json adapter, but for serializer the jsonAdapter is used.
*/
+ @Test
public void testRegisteredDeserializerOverridesJsonAdapter() {
JsonDeserializer<A> deserializer = new JsonDeserializer<A>() {
@Override public A deserialize(JsonElement json, Type typeOfT,
@@ -121,6 +131,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
assertEquals("registeredDeserializer", target.value);
}
+ @Test
public void testIncorrectTypeAdapterFails() {
try {
String json = new Gson().toJson(new ClassWithIncorrectJsonAdapter("bar"));
@@ -128,11 +139,13 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
} catch (ClassCastException expected) {}
}
+ @Test
public void testSuperclassTypeAdapterNotInvoked() {
String json = new Gson().toJson(new B("bar"));
assertFalse(json.contains("jsonAdapter"));
}
+ @Test
public void testNullSafeObjectFromJson() {
Gson gson = new Gson();
NullableClass fromJson = gson.fromJson("null", NullableClass.class);
@@ -250,6 +263,7 @@ public final class JsonAdapterAnnotationOnClassesTest extends TestCase {
}
}
+ @Test
public void testIncorrectJsonAdapterType() {
try {
new Gson().toJson(new D());
diff --git a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
index 706fe60f..9f80c7a1 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
@@ -16,9 +16,9 @@
package com.google.gson.functional;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -28,13 +28,16 @@ import com.google.gson.annotations.JsonAdapter;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
-
-import junit.framework.TestCase;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import org.junit.Test;
/**
* Functional tests for the {@link com.google.gson.annotations.JsonAdapter} annotation on fields.
*/
-public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
+public final class JsonAdapterAnnotationOnFieldsTest {
+ @Test
public void testClassAnnotationAdapterTakesPrecedenceOverDefault() {
Gson gson = new Gson();
String json = gson.toJson(new Computer(new User("Inderjeet Singh")));
@@ -43,6 +46,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
assertEquals("UserClassAnnotationAdapter", computer.user.name);
}
+ @Test
public void testClassAnnotationAdapterFactoryTakesPrecedenceOverDefault() {
Gson gson = new Gson();
String json = gson.toJson(new Gizmo(new Part("Part")));
@@ -51,6 +55,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
assertEquals("GizmoPartTypeAdapterFactory", computer.part.name);
}
+ @Test
public void testRegisteredTypeAdapterTakesPrecedenceOverClassAnnotationAdapter() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(User.class, new RegisteredUserAdapter())
@@ -61,6 +66,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
assertEquals("RegisteredUserAdapter", computer.user.name);
}
+ @Test
public void testFieldAnnotationTakesPrecedenceOverRegisteredTypeAdapter() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Part.class, new TypeAdapter<Part>() {
@@ -77,6 +83,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
assertEquals("PartJsonFieldAnnotationAdapter", gadget.part.name);
}
+ @Test
public void testFieldAnnotationTakesPrecedenceOverClassAnnotation() {
Gson gson = new Gson();
String json = gson.toJson(new Computer2(new User("Inderjeet Singh")));
@@ -187,6 +194,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
}
}
+ @Test
public void testJsonAdapterInvokedOnlyForAnnotatedFields() {
Gson gson = new Gson();
String json = "{'part1':'name','part2':{'name':'name2'}}";
@@ -204,6 +212,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
}
}
+ @Test
public void testJsonAdapterWrappedInNullSafeAsRequested() {
Gson gson = new Gson();
String fromJson = "{'part':null}";
@@ -225,6 +234,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
}
/** Regression test contributed through https://github.com/google/gson/issues/831 */
+ @Test
public void testNonPrimitiveFieldAnnotationTakesPrecedenceOverDefault() {
Gson gson = new Gson();
String json = gson.toJson(new GadgetWithOptionalPart(new Part("foo")));
@@ -234,6 +244,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
}
/** Regression test contributed through https://github.com/google/gson/issues/831 */
+ @Test
public void testPrimitiveFieldAnnotationTakesPrecedenceOverDefault() {
Gson gson = new Gson();
String json = gson.toJson(new GadgetWithPrimitivePart(42));
@@ -273,6 +284,7 @@ public final class JsonAdapterAnnotationOnFieldsTest extends TestCase {
}
}
+ @Test
public void testFieldAnnotationWorksForParameterizedType() {
Gson gson = new Gson();
String json = gson.toJson(new Gizmo2(Arrays.asList(new Part("Part"))));
diff --git a/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java b/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
index f5398843..e206ea96 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonAdapterSerializerDeserializerTest.java
@@ -16,7 +16,9 @@
package com.google.gson.functional;
-import java.lang.reflect.Type;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import com.google.gson.Gson;
import com.google.gson.JsonDeserializationContext;
@@ -27,15 +29,16 @@ import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.annotations.JsonAdapter;
-
-import junit.framework.TestCase;
+import java.lang.reflect.Type;
+import org.junit.Test;
/**
* Functional tests for the {@link JsonAdapter} annotation on fields where the value is of
* type {@link JsonSerializer} or {@link JsonDeserializer}.
*/
-public final class JsonAdapterSerializerDeserializerTest extends TestCase {
+public final class JsonAdapterSerializerDeserializerTest {
+ @Test
public void testJsonSerializerDeserializerBasedJsonAdapterOnFields() {
Gson gson = new Gson();
String json = gson.toJson(new Computer(new User("Inderjeet Singh"), null, new User("Jesse Wilson")));
@@ -90,6 +93,7 @@ public final class JsonAdapterSerializerDeserializerTest extends TestCase {
}
}
+ @Test
public void testJsonSerializerDeserializerBasedJsonAdapterOnClass() {
Gson gson = new Gson();
String json = gson.toJson(new Computer2(new User2("Inderjeet Singh")));
@@ -125,6 +129,7 @@ public final class JsonAdapterSerializerDeserializerTest extends TestCase {
}
}
+ @Test
public void testDifferentJsonAdaptersForGenericFieldsOfSameRawType() {
Container c = new Container("Foo", 10);
Gson gson = new Gson();
@@ -162,6 +167,7 @@ public final class JsonAdapterSerializerDeserializerTest extends TestCase {
}
}
+ @Test
public void testJsonAdapterNullSafe() {
Gson gson = new Gson();
String json = gson.toJson(new Computer3(null, null));
diff --git a/gson/src/test/java/com/google/gson/functional/JsonParserTest.java b/gson/src/test/java/com/google/gson/functional/JsonParserTest.java
index 965140ba..3f4989d9 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonParserTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonParserTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -26,14 +29,13 @@ import com.google.gson.JsonSyntaxException;
import com.google.gson.common.TestTypes.BagOfPrimitives;
import com.google.gson.common.TestTypes.Nested;
import com.google.gson.reflect.TypeToken;
-
-import junit.framework.TestCase;
-
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for that use JsonParser and related Gson methods
@@ -41,15 +43,15 @@ import java.util.Map;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class JsonParserTest extends TestCase {
+public class JsonParserTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testParseInvalidJson() {
try {
gson.fromJson("[[]", Object[].class);
@@ -57,6 +59,7 @@ public class JsonParserTest extends TestCase {
} catch (JsonSyntaxException expected) { }
}
+ @Test
public void testDeserializingCustomTree() {
JsonObject obj = new JsonObject();
obj.addProperty("stringValue", "foo");
@@ -66,6 +69,7 @@ public class JsonParserTest extends TestCase {
assertEquals("foo", target.stringValue);
}
+ @Test
public void testBadTypeForDeserializingCustomTree() {
JsonObject obj = new JsonObject();
obj.addProperty("stringValue", "foo");
@@ -78,6 +82,7 @@ public class JsonParserTest extends TestCase {
} catch (JsonParseException expected) { }
}
+ @Test
public void testBadFieldTypeForCustomDeserializerCustomTree() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive("blah"));
@@ -92,6 +97,7 @@ public class JsonParserTest extends TestCase {
} catch (JsonParseException expected) { }
}
+ @Test
public void testBadFieldTypeForDeserializingCustomTree() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive("blah"));
@@ -109,6 +115,7 @@ public class JsonParserTest extends TestCase {
} catch (JsonParseException expected) { }
}
+ @Test
public void testChangingCustomTreeAndDeserializing() {
StringReader json =
new StringReader("{'stringValue':'no message','intValue':10,'longValue':20}");
@@ -121,6 +128,7 @@ public class JsonParserTest extends TestCase {
assertEquals("fooBar", target.stringValue);
}
+ @Test
public void testExtraCommasInArrays() {
Type type = new TypeToken<List<String>>() {}.getType();
assertEquals(Arrays.asList("a", null, "b", null, null), gson.fromJson("[a,,b,,]", type));
@@ -128,6 +136,7 @@ public class JsonParserTest extends TestCase {
assertEquals(Arrays.asList("a", null), gson.fromJson("[a,]", type));
}
+ @Test
public void testExtraCommasInMaps() {
Type type = new TypeToken<Map<String, String>>() {}.getType();
try {
diff --git a/gson/src/test/java/com/google/gson/functional/JsonTreeTest.java b/gson/src/test/java/com/google/gson/functional/JsonTreeTest.java
index a6479403..5f7bd7e5 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonTreeTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonTreeTest.java
@@ -1,5 +1,10 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -8,7 +13,8 @@ import com.google.gson.common.TestTypes.BagOfPrimitives;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for {@link Gson#toJsonTree(Object)} and
@@ -17,15 +23,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class JsonTreeTest extends TestCase {
+public class JsonTreeTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testToJsonTree() {
BagOfPrimitives bag = new BagOfPrimitives(10L, 5, false, "foo");
JsonElement json = gson.toJsonTree(bag);
@@ -39,6 +45,7 @@ public class JsonTreeTest extends TestCase {
assertContains(obj, new JsonPrimitive("foo"));
}
+ @Test
public void testToJsonTreeObjectType() {
SubTypeOfBagOfPrimitives bag = new SubTypeOfBagOfPrimitives(10L, 5, false, "foo", 1.4F);
JsonElement json = gson.toJsonTree(bag, BagOfPrimitives.class);
@@ -52,6 +59,7 @@ public class JsonTreeTest extends TestCase {
assertContains(obj, new JsonPrimitive("foo"));
}
+ @Test
public void testJsonTreeToString() {
SubTypeOfBagOfPrimitives bag = new SubTypeOfBagOfPrimitives(10L, 5, false, "foo", 1.4F);
String json1 = gson.toJson(bag);
@@ -60,6 +68,7 @@ public class JsonTreeTest extends TestCase {
assertEquals(json1, json2);
}
+ @Test
public void testJsonTreeNull() {
BagOfPrimitives bag = new BagOfPrimitives(10L, 5, false, null);
JsonObject jsonElement = (JsonObject) gson.toJsonTree(bag, BagOfPrimitives.class);
diff --git a/gson/src/test/java/com/google/gson/functional/LeniencyTest.java b/gson/src/test/java/com/google/gson/functional/LeniencyTest.java
index 6b5375e4..cde0e344 100644
--- a/gson/src/test/java/com/google/gson/functional/LeniencyTest.java
+++ b/gson/src/test/java/com/google/gson/functional/LeniencyTest.java
@@ -15,27 +15,29 @@
*/
package com.google.gson.functional;
+import static java.util.Collections.singletonList;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.List;
-import junit.framework.TestCase;
-
-import static java.util.Collections.singletonList;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for leniency option.
*/
-public class LeniencyTest extends TestCase {
+public class LeniencyTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new GsonBuilder().setLenient().create();
}
+ @Test
public void testLenientFromJson() {
List<String> json = gson.fromJson(""
+ "[ # One!\n"
diff --git a/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java b/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
index 114c94ec..e193431d 100644
--- a/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MapAsArrayTypeAdapterTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
@@ -24,10 +27,12 @@ import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import junit.framework.TestCase;
+import org.junit.Ignore;
+import org.junit.Test;
-public class MapAsArrayTypeAdapterTest extends TestCase {
+public class MapAsArrayTypeAdapterTest {
+ @Test
public void testSerializeComplexMapWithTypeAdapter() {
Type type = new TypeToken<Map<Point, String>>() {}.getType();
Gson gson = new GsonBuilder()
@@ -53,6 +58,8 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
new TypeToken<Map<String, Boolean>>() {}.getType()));
}
+ @Test
+ @Ignore
public void disabled_testTwoTypesCollapseToOneSerialize() {
Gson gson = new GsonBuilder()
.enableComplexMapKeySerialization()
@@ -68,6 +75,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
}
}
+ @Test
public void testTwoTypesCollapseToOneDeserialize() {
Gson gson = new GsonBuilder()
.enableComplexMapKeySerialization()
@@ -81,6 +89,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
}
}
+ @Test
public void testMultipleEnableComplexKeyRegistrationHasNoEffect() throws Exception {
Type type = new TypeToken<Map<Point, String>>() {}.getType();
Gson gson = new GsonBuilder()
@@ -96,6 +105,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
assertEquals(original, gson.<Map<Point, String>>fromJson(json, type));
}
+ @Test
public void testMapWithTypeVariableSerialization() {
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
PointWithProperty<Point> map = new PointWithProperty<>();
@@ -105,6 +115,7 @@ public class MapAsArrayTypeAdapterTest extends TestCase {
assertEquals("{\"map\":[[{\"x\":2,\"y\":3},{\"x\":4,\"y\":5}]]}", json);
}
+ @Test
public void testMapWithTypeVariableDeserialization() {
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
String json = "{map:[[{x:2,y:3},{x:4,y:5}]]}";
diff --git a/gson/src/test/java/com/google/gson/functional/MapTest.java b/gson/src/test/java/com/google/gson/functional/MapTest.java
index c5344a76..43725663 100644
--- a/gson/src/test/java/com/google/gson/functional/MapTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MapTest.java
@@ -16,6 +16,12 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
@@ -41,7 +47,8 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentNavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional test for Json serialization and deserialization for Maps
@@ -49,15 +56,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class MapTest extends TestCase {
+public class MapTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testMapSerialization() {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("a", 1);
@@ -68,6 +75,7 @@ public class MapTest extends TestCase {
assertTrue(json.contains("\"b\":2"));
}
+ @Test
public void testMapDeserialization() {
String json = "{\"a\":1,\"b\":2}";
Type typeOfMap = new TypeToken<Map<String,Integer>>(){}.getType();
@@ -76,6 +84,7 @@ public class MapTest extends TestCase {
assertEquals(2, target.get("b").intValue());
}
+ @Test
public void testObjectMapSerialization() {
Map<String, Object> map = new LinkedHashMap<>();
map.put("a", 1);
@@ -85,6 +94,7 @@ public class MapTest extends TestCase {
assertTrue(json.contains("\"b\":\"string\""));
}
+ @Test
public void testMapSerializationEmpty() {
Map<String, Integer> map = new LinkedHashMap<>();
Type typeOfMap = new TypeToken<Map<String, Integer>>() {}.getType();
@@ -92,12 +102,14 @@ public class MapTest extends TestCase {
assertEquals("{}", json);
}
+ @Test
public void testMapDeserializationEmpty() {
Type typeOfMap = new TypeToken<Map<String, Integer>>() {}.getType();
Map<String, Integer> map = gson.fromJson("{}", typeOfMap);
assertTrue(map.isEmpty());
}
+ @Test
public void testMapSerializationWithNullValue() {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("abc", null);
@@ -108,6 +120,7 @@ public class MapTest extends TestCase {
assertEquals("{}", json);
}
+ @Test
public void testMapDeserializationWithNullValue() {
Type typeOfMap = new TypeToken<Map<String, Integer>>() {}.getType();
Map<String, Integer> map = gson.fromJson("{\"abc\":null}", typeOfMap);
@@ -115,6 +128,7 @@ public class MapTest extends TestCase {
assertNull(map.get("abc"));
}
+ @Test
public void testMapSerializationWithNullValueButSerializeNulls() {
gson = new GsonBuilder().serializeNulls().create();
Map<String, Integer> map = new LinkedHashMap<>();
@@ -125,6 +139,7 @@ public class MapTest extends TestCase {
assertEquals("{\"abc\":null}", json);
}
+ @Test
public void testMapSerializationWithNullKey() {
Map<String, Integer> map = new LinkedHashMap<>();
map.put(null, 123);
@@ -134,6 +149,7 @@ public class MapTest extends TestCase {
assertEquals("{\"null\":123}", json);
}
+ @Test
public void testMapDeserializationWithNullKey() {
Type typeOfMap = new TypeToken<Map<String, Integer>>() {}.getType();
Map<String, Integer> map = gson.fromJson("{\"null\":123}", typeOfMap);
@@ -147,6 +163,7 @@ public class MapTest extends TestCase {
assertNull(map.get(null));
}
+ @Test
public void testMapSerializationWithIntegerKeys() {
Map<Integer, String> map = new LinkedHashMap<>();
map.put(123, "456");
@@ -156,6 +173,7 @@ public class MapTest extends TestCase {
assertEquals("{\"123\":\"456\"}", json);
}
+ @Test
public void testMapDeserializationWithIntegerKeys() {
Type typeOfMap = new TypeToken<Map<Integer, String>>() {}.getType();
Map<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -164,6 +182,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(123));
}
+ @Test
public void testMapDeserializationWithUnquotedIntegerKeys() {
Type typeOfMap = new TypeToken<Map<Integer, String>>() {}.getType();
Map<Integer, String> map = gson.fromJson("{123:\"456\"}", typeOfMap);
@@ -172,6 +191,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(123));
}
+ @Test
public void testMapDeserializationWithLongKeys() {
long longValue = 9876543210L;
String json = String.format("{\"%d\":\"456\"}", longValue);
@@ -182,6 +202,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(longValue));
}
+ @Test
public void testMapDeserializationWithUnquotedLongKeys() {
long longKey = 9876543210L;
String json = String.format("{%d:\"456\"}", longKey);
@@ -192,6 +213,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(longKey));
}
+ @Test
public void testHashMapDeserialization() throws Exception {
Type typeOfMap = new TypeToken<HashMap<Integer, String>>() {}.getType();
HashMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -200,6 +222,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(123));
}
+ @Test
public void testSortedMap() throws Exception {
Type typeOfMap = new TypeToken<SortedMap<Integer, String>>() {}.getType();
SortedMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -208,6 +231,7 @@ public class MapTest extends TestCase {
assertEquals("456", map.get(123));
}
+ @Test
public void testConcurrentMap() throws Exception {
Type typeOfMap = new TypeToken<ConcurrentMap<Integer, String>>() {}.getType();
ConcurrentMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -218,6 +242,7 @@ public class MapTest extends TestCase {
assertEquals("{\"123\":\"456\"}", json);
}
+ @Test
public void testConcurrentHashMap() throws Exception {
Type typeOfMap = new TypeToken<ConcurrentHashMap<Integer, String>>() {}.getType();
ConcurrentHashMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -228,6 +253,7 @@ public class MapTest extends TestCase {
assertEquals("{\"123\":\"456\"}", json);
}
+ @Test
public void testConcurrentNavigableMap() throws Exception {
Type typeOfMap = new TypeToken<ConcurrentNavigableMap<Integer, String>>() {}.getType();
ConcurrentNavigableMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -238,6 +264,7 @@ public class MapTest extends TestCase {
assertEquals("{\"123\":\"456\"}", json);
}
+ @Test
public void testConcurrentSkipListMap() throws Exception {
Type typeOfMap = new TypeToken<ConcurrentSkipListMap<Integer, String>>() {}.getType();
ConcurrentSkipListMap<Integer, String> map = gson.fromJson("{\"123\":\"456\"}", typeOfMap);
@@ -248,6 +275,7 @@ public class MapTest extends TestCase {
assertEquals("{\"123\":\"456\"}", json);
}
+ @Test
public void testParameterizedMapSubclassSerialization() {
MyParameterizedMap<String, String> map = new MyParameterizedMap<>(10);
map.put("a", "b");
@@ -264,6 +292,7 @@ public class MapTest extends TestCase {
}
}
+ @Test
public void testMapSubclassSerialization() {
MyMap map = new MyMap();
map.put("a", "b");
@@ -271,6 +300,7 @@ public class MapTest extends TestCase {
assertTrue(json.contains("\"a\":\"b\""));
}
+ @Test
public void testMapStandardSubclassDeserialization() {
String json = "{a:'1',b:'2'}";
Type type = new TypeToken<LinkedHashMap<String, String>>() {}.getType();
@@ -279,6 +309,7 @@ public class MapTest extends TestCase {
assertEquals("2", map.get("b"));
}
+ @Test
public void testMapSubclassDeserialization() {
Gson gson = new GsonBuilder().registerTypeAdapter(MyMap.class, new InstanceCreator<MyMap>() {
@Override public MyMap createInstance(Type type) {
@@ -291,6 +322,7 @@ public class MapTest extends TestCase {
assertEquals("2", map.get("b"));
}
+ @Test
public void testCustomSerializerForSpecificMapType() {
Type type = $Gson$Types.newParameterizedTypeWithOwner(
null, Map.class, String.class, Long.class);
@@ -324,6 +356,7 @@ public class MapTest extends TestCase {
/**
* Created in response to http://code.google.com/p/google-gson/issues/detail?id=99
*/
+ @Test
public void testMapSerializationWithNullValues() {
ClassWithAMap target = new ClassWithAMap();
target.map.put("name1", null);
@@ -336,6 +369,7 @@ public class MapTest extends TestCase {
/**
* Created in response to http://code.google.com/p/google-gson/issues/detail?id=99
*/
+ @Test
public void testMapSerializationWithNullValuesSerialized() {
Gson gson = new GsonBuilder().serializeNulls().create();
ClassWithAMap target = new ClassWithAMap();
@@ -346,6 +380,7 @@ public class MapTest extends TestCase {
assertTrue(json.contains("name2"));
}
+ @Test
public void testMapSerializationWithWildcardValues() {
Map<String, ? extends Collection<? extends Integer>> map = new LinkedHashMap<>();
map.put("test", null);
@@ -356,6 +391,7 @@ public class MapTest extends TestCase {
assertEquals("{}", json);
}
+ @Test
public void testMapDeserializationWithWildcardValues() {
Type typeOfMap = new TypeToken<Map<String, ? extends Long>>() {}.getType();
Map<String, ? extends Long> map = gson.fromJson("{\"test\":123}", typeOfMap);
@@ -374,6 +410,7 @@ public class MapTest extends TestCase {
/**
* From bug report http://code.google.com/p/google-gson/issues/detail?id=95
*/
+ @Test
public void testMapOfMapSerialization() {
Map<String, Map<String, String>> map = new HashMap<>();
Map<String, String> nestedMap = new HashMap<>();
@@ -389,6 +426,7 @@ public class MapTest extends TestCase {
/**
* From bug report http://code.google.com/p/google-gson/issues/detail?id=95
*/
+ @Test
public void testMapOfMapDeserialization() {
String json = "{nestedMap:{'2':'2','1':'1'}}";
Type type = new TypeToken<Map<String, Map<String, String>>>(){}.getType();
@@ -401,6 +439,7 @@ public class MapTest extends TestCase {
/**
* From bug report http://code.google.com/p/google-gson/issues/detail?id=178
*/
+ @Test
public void testMapWithQuotes() {
Map<String, String> map = new HashMap<>();
map.put("a\"b", "c\"d");
@@ -411,6 +450,7 @@ public class MapTest extends TestCase {
/**
* From issue 227.
*/
+ @Test
public void testWriteMapsWithEmptyStringKey() {
Map<String, Boolean> map = new HashMap<>();
map.put("", true);
@@ -418,6 +458,7 @@ public class MapTest extends TestCase {
}
+ @Test
public void testReadMapsWithEmptyStringKey() {
Map<String, Boolean> map = gson.fromJson("{\"\":true}", new TypeToken<Map<String, Boolean>>() {}.getType());
assertEquals(Boolean.TRUE, map.get(""));
@@ -426,6 +467,7 @@ public class MapTest extends TestCase {
/**
* From bug report http://code.google.com/p/google-gson/issues/detail?id=204
*/
+ @Test
public void testSerializeMaps() {
Map<String, Object> map = new LinkedHashMap<>();
map.put("a", 12);
@@ -454,6 +496,7 @@ public class MapTest extends TestCase {
new Gson().toJson(map));
}
+ @Test
public final void testInterfaceTypeMap() {
MapClass element = new MapClass();
TestTypes.Sub subType = new TestTypes.Sub();
@@ -475,6 +518,7 @@ public class MapTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public final void testInterfaceTypeMapWithSerializer() {
MapClass element = new MapClass();
TestTypes.Sub subType = new TestTypes.Sub();
@@ -509,6 +553,7 @@ public class MapTest extends TestCase {
assertEquals(expected, json);
}
+ @Test
public void testGeneralMapField() throws Exception {
MapWithGeneralMapParameters map = new MapWithGeneralMapParameters();
map.map.put("string", "testString");
@@ -525,6 +570,7 @@ public class MapTest extends TestCase {
assertEquals(expected, gson.toJson(map));
}
+ @Test
public void testComplexKeysSerialization() {
Map<Point, String> map = new LinkedHashMap<>();
map.put(new Point(2, 3), "a");
@@ -534,6 +580,7 @@ public class MapTest extends TestCase {
assertEquals(json, gson.toJson(map, Map.class));
}
+ @Test
public void testComplexKeysDeserialization() {
String json = "{'2,3':'a','5,7':'b'}";
try {
@@ -543,6 +590,7 @@ public class MapTest extends TestCase {
}
}
+ @Test
public void testStringKeyDeserialization() {
String json = "{'2,3':'a','5,7':'b'}";
Map<String, String> map = new LinkedHashMap<>();
@@ -551,6 +599,7 @@ public class MapTest extends TestCase {
assertEquals(map, gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType()));
}
+ @Test
public void testNumberKeyDeserialization() {
String json = "{'2.3':'a','5.7':'b'}";
Map<Double, String> map = new LinkedHashMap<>();
@@ -559,6 +608,7 @@ public class MapTest extends TestCase {
assertEquals(map, gson.fromJson(json, new TypeToken<Map<Double, String>>() {}.getType()));
}
+ @Test
public void testBooleanKeyDeserialization() {
String json = "{'true':'a','false':'b'}";
Map<Boolean, String> map = new LinkedHashMap<>();
@@ -567,6 +617,7 @@ public class MapTest extends TestCase {
assertEquals(map, gson.fromJson(json, new TypeToken<Map<Boolean, String>>() {}.getType()));
}
+ @Test
public void testMapDeserializationWithDuplicateKeys() {
try {
gson.fromJson("{'a':1,'a':2}", new TypeToken<Map<String, Integer>>() {}.getType());
@@ -575,6 +626,7 @@ public class MapTest extends TestCase {
}
}
+ @Test
public void testSerializeMapOfMaps() {
Type type = new TypeToken<Map<String, Map<String, String>>>() {}.getType();
Map<String, Map<String, String>> map = newMap(
@@ -584,6 +636,7 @@ public class MapTest extends TestCase {
gson.toJson(map, type).replace('"', '\''));
}
+ @Test
public void testDeerializeMapOfMaps() {
Type type = new TypeToken<Map<String, Map<String, String>>>() {}.getType();
Map<String, Map<String, String>> map = newMap(
@@ -600,6 +653,7 @@ public class MapTest extends TestCase {
return result;
}
+ @Test
public void testMapNamePromotionWithJsonElementReader() {
String json = "{'2.3':'a'}";
Map<Double, String> map = new LinkedHashMap<>();
diff --git a/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java b/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
index a179fa8e..1b6ed887 100644
--- a/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
+++ b/gson/src/test/java/com/google/gson/functional/MoreSpecificTypeSerializationTest.java
@@ -16,15 +16,19 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.JsonObject;
-
-import junit.framework.TestCase;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests for Gson serialization of a sub-class object while encountering a base-class type
@@ -32,15 +36,15 @@ import java.util.Map;
* @author Inderjeet Singh
*/
@SuppressWarnings("unused")
-public class MoreSpecificTypeSerializationTest extends TestCase {
+public class MoreSpecificTypeSerializationTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testSubclassFields() {
ClassWithBaseFields target = new ClassWithBaseFields(new Sub(1, 2));
String json = gson.toJson(target);
@@ -48,6 +52,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
assertTrue(json.contains("\"s\":2"));
}
+ @Test
public void testListOfSubclassFields() {
Collection<Base> list = new ArrayList<>();
list.add(new Base(1));
@@ -58,6 +63,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
assertTrue(json, json.contains("{\"s\":3,\"b\":2}"));
}
+ @Test
public void testMapOfSubclassFields() {
Map<String, Base> map = new HashMap<>();
map.put("base", new Base(1));
@@ -73,6 +79,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
/**
* For parameterized type, Gson ignores the more-specific type and sticks to the declared type
*/
+ @Test
public void testParameterizedSubclassFields() {
ClassWithParameterizedBaseFields target = new ClassWithParameterizedBaseFields(
new ParameterizedSub<>("one", "two"));
@@ -85,6 +92,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
* For parameterized type in a List, Gson ignores the more-specific type and sticks to
* the declared type
*/
+ @Test
public void testListOfParameterizedSubclassFields() {
Collection<ParameterizedBase<String>> list = new ArrayList<>();
list.add(new ParameterizedBase<>("one"));
@@ -100,6 +108,7 @@ public class MoreSpecificTypeSerializationTest extends TestCase {
* For parameterized type in a map, Gson ignores the more-specific type and sticks to the
* declared type
*/
+ @Test
public void testMapOfParameterizedSubclassFields() {
Map<String, ParameterizedBase<String>> map = new HashMap<>();
map.put("base", new ParameterizedBase<>("one"));
diff --git a/gson/src/test/java/com/google/gson/functional/NamingPolicyTest.java b/gson/src/test/java/com/google/gson/functional/NamingPolicyTest.java
index ab76e649..67246bf7 100644
--- a/gson/src/test/java/com/google/gson/functional/NamingPolicyTest.java
+++ b/gson/src/test/java/com/google/gson/functional/NamingPolicyTest.java
@@ -15,6 +15,9 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import com.google.gson.FieldNamingPolicy;
import com.google.gson.FieldNamingStrategy;
import com.google.gson.Gson;
@@ -22,10 +25,9 @@ import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import com.google.gson.common.TestTypes.ClassWithSerializedNameFields;
import com.google.gson.common.TestTypes.StringWrapper;
-
-import junit.framework.TestCase;
-
import java.lang.reflect.Field;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for naming policies.
@@ -33,15 +35,15 @@ import java.lang.reflect.Field;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class NamingPolicyTest extends TestCase {
+public class NamingPolicyTest {
private GsonBuilder builder;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
builder = new GsonBuilder();
}
+ @Test
public void testGsonWithNonDefaultFieldNamingPolicySerialization() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
StringWrapper target = new StringWrapper("blah");
@@ -49,6 +51,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithNonDefaultFieldNamingPolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
String target = "{\"SomeConstantStringInstanceField\":\"someValue\"}";
@@ -56,6 +59,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testGsonWithLowerCaseDashPolicySerialization() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
StringWrapper target = new StringWrapper("blah");
@@ -63,6 +67,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithLowerCaseDotPolicySerialization() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DOTS).create();
StringWrapper target = new StringWrapper("blah");
@@ -70,6 +75,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithLowerCaseDotPolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DOTS).create();
String target = "{\"some.constant.string.instance.field\":\"someValue\"}";
@@ -77,6 +83,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testGsonWithLowerCaseDashPolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();
String target = "{\"some-constant-string-instance-field\":\"someValue\"}";
@@ -84,6 +91,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testGsonWithLowerCaseUnderscorePolicySerialization() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
@@ -92,6 +100,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithLowerCaseUnderscorePolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
@@ -100,6 +109,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testGsonWithSerializedNameFieldNamingPolicySerialization() {
Gson gson = builder.create();
ClassWithSerializedNameFields expected = new ClassWithSerializedNameFields(5, 6);
@@ -107,6 +117,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals(expected.getExpectedJson(), actual);
}
+ @Test
public void testGsonWithSerializedNameFieldNamingPolicyDeserialization() {
Gson gson = builder.create();
ClassWithSerializedNameFields expected = new ClassWithSerializedNameFields(5, 7);
@@ -115,6 +126,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals(expected.f, actual.f);
}
+ @Test
public void testGsonDuplicateNameUsingSerializedNameFieldNamingPolicySerialization() {
Gson gson = builder.create();
try {
@@ -122,9 +134,16 @@ public class NamingPolicyTest extends TestCase {
gson.toJson(target);
fail();
} catch (IllegalArgumentException expected) {
+ assertEquals(
+ "Class com.google.gson.functional.NamingPolicyTest$ClassWithDuplicateFields declares multiple JSON fields named 'a';"
+ + " conflict is caused by fields com.google.gson.functional.NamingPolicyTest$ClassWithDuplicateFields#a and"
+ + " com.google.gson.functional.NamingPolicyTest$ClassWithDuplicateFields#b",
+ expected.getMessage()
+ );
}
}
+ @Test
public void testGsonWithUpperCamelCaseSpacesPolicySerialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES)
.create();
@@ -133,6 +152,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithUpperCamelCaseSpacesPolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES)
.create();
@@ -141,6 +161,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testGsonWithUpperCaseUnderscorePolicySerialization() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CASE_WITH_UNDERSCORES)
.create();
@@ -149,6 +170,7 @@ public class NamingPolicyTest extends TestCase {
+ target.someConstantStringInstanceField + "\"}", gson.toJson(target));
}
+ @Test
public void testGsonWithUpperCaseUnderscorePolicyDeserialiation() {
Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CASE_WITH_UNDERSCORES)
.create();
@@ -157,6 +179,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("someValue", deserializedObject.someConstantStringInstanceField);
}
+ @Test
public void testDeprecatedNamingStrategy() throws Exception {
Gson gson = builder.setFieldNamingStrategy(new UpperCaseNamingStrategy()).create();
ClassWithDuplicateFields target = new ClassWithDuplicateFields(10);
@@ -164,6 +187,7 @@ public class NamingPolicyTest extends TestCase {
assertEquals("{\"A\":10}", actual);
}
+ @Test
public void testComplexFieldNameStrategy() throws Exception {
Gson gson = new Gson();
String json = gson.toJson(new ClassWithComplexFieldName(10));
@@ -175,6 +199,7 @@ public class NamingPolicyTest extends TestCase {
}
/** http://code.google.com/p/google-gson/issues/detail?id=349 */
+ @Test
public void testAtSignInSerializedName() {
assertEquals("{\"@foo\":\"bar\"}", new Gson().toJson(new AtName()));
}
diff --git a/gson/src/test/java/com/google/gson/functional/NullObjectAndFieldTest.java b/gson/src/test/java/com/google/gson/functional/NullObjectAndFieldTest.java
index a9b77f1d..793ad569 100644
--- a/gson/src/test/java/com/google/gson/functional/NullObjectAndFieldTest.java
+++ b/gson/src/test/java/com/google/gson/functional/NullObjectAndFieldTest.java
@@ -16,22 +16,26 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.common.TestTypes.BagOfPrimitives;
import com.google.gson.common.TestTypes.ClassWithObjects;
-
-import junit.framework.TestCase;
-
import java.lang.reflect.Type;
import java.util.Collection;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for the different cases for serializing (or ignoring) null fields and object.
@@ -39,15 +43,15 @@ import java.util.Collection;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class NullObjectAndFieldTest extends TestCase {
+public class NullObjectAndFieldTest {
private GsonBuilder gsonBuilder;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gsonBuilder = new GsonBuilder().serializeNulls();
}
+ @Test
public void testTopLevelNullObjectSerialization() {
Gson gson = gsonBuilder.create();
String actual = gson.toJson(null);
@@ -57,12 +61,14 @@ public class NullObjectAndFieldTest extends TestCase {
assertEquals("null", actual);
}
+ @Test
public void testTopLevelNullObjectDeserialization() throws Exception {
Gson gson = gsonBuilder.create();
String actual = gson.fromJson("null", String.class);
assertNull(actual);
}
+ @Test
public void testExplicitSerializationOfNulls() {
Gson gson = gsonBuilder.create();
ClassWithObjects target = new ClassWithObjects(null);
@@ -71,12 +77,14 @@ public class NullObjectAndFieldTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testExplicitDeserializationOfNulls() throws Exception {
Gson gson = gsonBuilder.create();
ClassWithObjects target = gson.fromJson("{\"bag\":null}", ClassWithObjects.class);
assertNull(target.bag);
}
+ @Test
public void testExplicitSerializationOfNullArrayMembers() {
Gson gson = gsonBuilder.create();
ClassWithMembers target = new ClassWithMembers();
@@ -87,6 +95,7 @@ public class NullObjectAndFieldTest extends TestCase {
/**
* Added to verify http://code.google.com/p/google-gson/issues/detail?id=68
*/
+ @Test
public void testNullWrappedPrimitiveMemberSerialization() {
Gson gson = gsonBuilder.serializeNulls().create();
ClassWithNullWrappedPrimitive target = new ClassWithNullWrappedPrimitive();
@@ -97,6 +106,7 @@ public class NullObjectAndFieldTest extends TestCase {
/**
* Added to verify http://code.google.com/p/google-gson/issues/detail?id=68
*/
+ @Test
public void testNullWrappedPrimitiveMemberDeserialization() {
Gson gson = gsonBuilder.create();
String json = "{'value':null}";
@@ -104,6 +114,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertNull(target.value);
}
+ @Test
public void testExplicitSerializationOfNullCollectionMembers() {
Gson gson = gsonBuilder.create();
ClassWithMembers target = new ClassWithMembers();
@@ -111,6 +122,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertTrue(json.contains("\"col\":null"));
}
+ @Test
public void testExplicitSerializationOfNullStringMembers() {
Gson gson = gsonBuilder.create();
ClassWithMembers target = new ClassWithMembers();
@@ -118,6 +130,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertTrue(json.contains("\"str\":null"));
}
+ @Test
public void testCustomSerializationOfNulls() {
gsonBuilder.registerTypeAdapter(ClassWithObjects.class, new ClassWithObjectsSerializer());
Gson gson = gsonBuilder.create();
@@ -127,6 +140,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testPrintPrintingObjectWithNulls() throws Exception {
gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -138,6 +152,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertTrue(result.contains("\"str\":null"));
}
+ @Test
public void testPrintPrintingArraysWithNulls() throws Exception {
gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -150,6 +165,7 @@ public class NullObjectAndFieldTest extends TestCase {
}
// test for issue 389
+ @Test
public void testAbsentJsonElementsAreSetToNull() {
Gson gson = new Gson();
ClassWithInitializedMembers target =
@@ -200,6 +216,7 @@ public class NullObjectAndFieldTest extends TestCase {
}
}
+ @Test
public void testExplicitNullSetsFieldToNullDuringDeserialization() {
Gson gson = new Gson();
String json = "{value:null}";
@@ -207,6 +224,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertNull(obj.value);
}
+ @Test
public void testCustomTypeAdapterPassesNullSerialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(ObjectWithField.class, new JsonSerializer<ObjectWithField>() {
@@ -221,6 +239,7 @@ public class NullObjectAndFieldTest extends TestCase {
assertFalse(json.contains("value1"));
}
+ @Test
public void testCustomTypeAdapterPassesNullDesrialization() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(ObjectWithField.class, new JsonDeserializer<ObjectWithField>() {
diff --git a/gson/src/test/java/com/google/gson/functional/ObjectTest.java b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
index bed5b598..f13792f5 100644
--- a/gson/src/test/java/com/google/gson/functional/ObjectTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
@@ -16,6 +16,14 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
@@ -45,7 +53,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
-import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json serialization and deserialization of regular classes.
@@ -53,14 +63,13 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class ObjectTest extends TestCase {
+public class ObjectTest {
private Gson gson;
private TimeZone oldTimeZone;
private Locale oldLocale;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
oldTimeZone = TimeZone.getDefault();
@@ -69,13 +78,13 @@ public class ObjectTest extends TestCase {
Locale.setDefault(Locale.US);
}
- @Override
- protected void tearDown() throws Exception {
+ @After
+ public void tearDown() throws Exception {
TimeZone.setDefault(oldTimeZone);
Locale.setDefault(oldLocale);
- super.tearDown();
}
+ @Test
public void testJsonInSingleQuotesDeserialization() {
String json = "{'stringValue':'no message','intValue':10,'longValue':20}";
BagOfPrimitives target = gson.fromJson(json, BagOfPrimitives.class);
@@ -84,6 +93,7 @@ public class ObjectTest extends TestCase {
assertEquals(20, target.longValue);
}
+ @Test
public void testJsonInMixedQuotesDeserialization() {
String json = "{\"stringValue\":'no message','intValue':10,'longValue':20}";
BagOfPrimitives target = gson.fromJson(json, BagOfPrimitives.class);
@@ -92,11 +102,13 @@ public class ObjectTest extends TestCase {
assertEquals(20, target.longValue);
}
+ @Test
public void testBagOfPrimitivesSerialization() throws Exception {
BagOfPrimitives target = new BagOfPrimitives(10, 20, false, "stringValue");
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testBagOfPrimitivesDeserialization() throws Exception {
BagOfPrimitives src = new BagOfPrimitives(10, 20, false, "stringValue");
String json = src.getExpectedJson();
@@ -104,11 +116,13 @@ public class ObjectTest extends TestCase {
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testBagOfPrimitiveWrappersSerialization() throws Exception {
BagOfPrimitiveWrappers target = new BagOfPrimitiveWrappers(10L, 20, false);
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testBagOfPrimitiveWrappersDeserialization() throws Exception {
BagOfPrimitiveWrappers target = new BagOfPrimitiveWrappers(10L, 20, false);
String jsonString = target.getExpectedJson();
@@ -116,17 +130,20 @@ public class ObjectTest extends TestCase {
assertEquals(jsonString, target.getExpectedJson());
}
+ @Test
public void testClassWithTransientFieldsSerialization() throws Exception {
ClassWithTransientFields<Long> target = new ClassWithTransientFields<>(1L);
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testClassWithTransientFieldsDeserialization() throws Exception {
String json = "{\"longValue\":[1]}";
ClassWithTransientFields<?> target = gson.fromJson(json, ClassWithTransientFields.class);
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testClassWithTransientFieldsDeserializationTransientFieldsPassedInJsonAreIgnored()
throws Exception {
String json = "{\"transientLongValue\":1,\"longValue\":[1]}";
@@ -134,10 +151,12 @@ public class ObjectTest extends TestCase {
assertFalse(target.transientLongValue != 1);
}
+ @Test
public void testClassWithNoFieldsSerialization() throws Exception {
assertEquals("{}", gson.toJson(new ClassWithNoFields()));
}
+ @Test
public void testClassWithNoFieldsDeserialization() throws Exception {
String json = "{}";
ClassWithNoFields target = gson.fromJson(json, ClassWithNoFields.class);
@@ -145,12 +164,40 @@ public class ObjectTest extends TestCase {
assertEquals(expected, target);
}
+ private static class Subclass extends Superclass1 {
+ }
+ private static class Superclass1 extends Superclass2 {
+ @SuppressWarnings("unused")
+ String s;
+ }
+ private static class Superclass2 {
+ @SuppressWarnings("unused")
+ String s;
+ }
+
+ @Test
+ public void testClassWithDuplicateFields() {
+ try {
+ gson.getAdapter(Subclass.class);
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertEquals(
+ "Class com.google.gson.functional.ObjectTest$Subclass declares multiple JSON fields named 's';"
+ + " conflict is caused by fields com.google.gson.functional.ObjectTest$Superclass1#s and"
+ + " com.google.gson.functional.ObjectTest$Superclass2#s",
+ e.getMessage()
+ );
+ }
+ }
+
+ @Test
public void testNestedSerialization() throws Exception {
Nested target = new Nested(new BagOfPrimitives(10, 20, false, "stringValue"),
new BagOfPrimitives(30, 40, true, "stringValue"));
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testNestedDeserialization() throws Exception {
String json = "{\"primitive1\":{\"longValue\":10,\"intValue\":20,\"booleanValue\":false,"
+ "\"stringValue\":\"stringValue\"},\"primitive2\":{\"longValue\":30,\"intValue\":40,"
@@ -158,15 +205,18 @@ public class ObjectTest extends TestCase {
Nested target = gson.fromJson(json, Nested.class);
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testNullSerialization() throws Exception {
assertEquals("null", gson.toJson(null));
}
+ @Test
public void testEmptyStringDeserialization() throws Exception {
Object object = gson.fromJson("", Object.class);
assertNull(object);
}
+ @Test
public void testTruncatedDeserialization() {
try {
gson.fromJson("[\"a\", \"b\",", new TypeToken<List<String>>() {}.getType());
@@ -175,17 +225,20 @@ public class ObjectTest extends TestCase {
}
}
+ @Test
public void testNullDeserialization() throws Exception {
String myNullObject = null;
Object object = gson.fromJson(myNullObject, Object.class);
assertNull(object);
}
+ @Test
public void testNullFieldsSerialization() throws Exception {
Nested target = new Nested(new BagOfPrimitives(10, 20, false, "stringValue"), null);
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testNullFieldsDeserialization() throws Exception {
String json = "{\"primitive1\":{\"longValue\":10,\"intValue\":20,\"booleanValue\":false"
+ ",\"stringValue\":\"stringValue\"}}";
@@ -193,28 +246,33 @@ public class ObjectTest extends TestCase {
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testArrayOfObjectsSerialization() throws Exception {
ArrayOfObjects target = new ArrayOfObjects();
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testArrayOfObjectsDeserialization() throws Exception {
String json = new ArrayOfObjects().getExpectedJson();
ArrayOfObjects target = gson.fromJson(json, ArrayOfObjects.class);
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testArrayOfArraysSerialization() throws Exception {
ArrayOfArrays target = new ArrayOfArrays();
assertEquals(target.getExpectedJson(), gson.toJson(target));
}
+ @Test
public void testArrayOfArraysDeserialization() throws Exception {
String json = new ArrayOfArrays().getExpectedJson();
ArrayOfArrays target = gson.fromJson(json, ArrayOfArrays.class);
assertEquals(json, target.getExpectedJson());
}
+ @Test
public void testArrayOfObjectsAsFields() throws Exception {
ClassWithObjects classWithObjects = new ClassWithObjects();
BagOfPrimitives bagOfPrimitives = new BagOfPrimitives();
@@ -234,6 +292,7 @@ public class ObjectTest extends TestCase {
/**
* Created in response to Issue 14: http://code.google.com/p/google-gson/issues/detail?id=14
*/
+ @Test
public void testNullArraysDeserialization() throws Exception {
String json = "{\"array\": null}";
ClassWithArray target = gson.fromJson(json, ClassWithArray.class);
@@ -243,12 +302,14 @@ public class ObjectTest extends TestCase {
/**
* Created in response to Issue 14: http://code.google.com/p/google-gson/issues/detail?id=14
*/
+ @Test
public void testNullObjectFieldsDeserialization() throws Exception {
String json = "{\"bag\": null}";
ClassWithObjects target = gson.fromJson(json, ClassWithObjects.class);
assertNull(target.bag);
}
+ @Test
public void testEmptyCollectionInAnObjectDeserialization() throws Exception {
String json = "{\"children\":[]}";
ClassWithCollectionField target = gson.fromJson(json, ClassWithCollectionField.class);
@@ -260,6 +321,7 @@ public class ObjectTest extends TestCase {
Collection<String> children = new ArrayList<>();
}
+ @Test
public void testPrimitiveArrayInAnObjectDeserialization() throws Exception {
String json = "{\"longArray\":[0,1,2,3,4,5,6,7,8,9]}";
PrimitiveArray target = gson.fromJson(json, PrimitiveArray.class);
@@ -269,29 +331,34 @@ public class ObjectTest extends TestCase {
/**
* Created in response to Issue 14: http://code.google.com/p/google-gson/issues/detail?id=14
*/
+ @Test
public void testNullPrimitiveFieldsDeserialization() throws Exception {
String json = "{\"longValue\":null}";
BagOfPrimitives target = gson.fromJson(json, BagOfPrimitives.class);
assertEquals(BagOfPrimitives.DEFAULT_VALUE, target.longValue);
}
+ @Test
public void testEmptyCollectionInAnObjectSerialization() throws Exception {
ClassWithCollectionField target = new ClassWithCollectionField();
assertEquals("{\"children\":[]}", gson.toJson(target));
}
+ @Test
public void testPrivateNoArgConstructorDeserialization() throws Exception {
ClassWithPrivateNoArgsConstructor target =
gson.fromJson("{\"a\":20}", ClassWithPrivateNoArgsConstructor.class);
assertEquals(20, target.a);
}
+ @Test
public void testAnonymousLocalClassesSerialization() throws Exception {
assertEquals("null", gson.toJson(new ClassWithNoFields() {
// empty anonymous class
}));
}
+ @Test
public void testAnonymousLocalClassesCustomSerialization() throws Exception {
gson = new GsonBuilder()
.registerTypeHierarchyAdapter(ClassWithNoFields.class,
@@ -307,6 +374,7 @@ public class ObjectTest extends TestCase {
}));
}
+ @Test
public void testPrimitiveArrayFieldSerialization() {
PrimitiveArray target = new PrimitiveArray(new long[] { 1L, 2L, 3L });
assertEquals(target.getExpectedJson(), gson.toJson(target));
@@ -316,6 +384,7 @@ public class ObjectTest extends TestCase {
* Tests that a class field with type Object can be serialized properly.
* See issue 54
*/
+ @Test
public void testClassWithObjectFieldSerialization() {
ClassWithObjectField obj = new ClassWithObjectField();
obj.member = "abc";
@@ -328,6 +397,7 @@ public class ObjectTest extends TestCase {
Object member;
}
+ @Test
public void testInnerClassSerialization() {
Parent p = new Parent();
Parent.Child c = p.new Child();
@@ -336,6 +406,7 @@ public class ObjectTest extends TestCase {
assertFalse(json.contains("value1"));
}
+ @Test
public void testInnerClassDeserialization() {
final Parent p = new Parent();
Gson gson = new GsonBuilder().registerTypeAdapter(
@@ -404,6 +475,7 @@ public class ObjectTest extends TestCase {
/**
* In response to Issue 41 http://code.google.com/p/google-gson/issues/detail?id=41
*/
+ @Test
public void testObjectFieldNamesWithoutQuotesDeserialization() {
String json = "{longValue:1,'booleanValue':true,\"stringValue\":'bar'}";
BagOfPrimitives bag = gson.fromJson(json, BagOfPrimitives.class);
@@ -412,6 +484,7 @@ public class ObjectTest extends TestCase {
assertEquals("bar", bag.stringValue);
}
+ @Test
public void testStringFieldWithNumberValueDeserialization() {
String json = "{\"stringValue\":1}";
BagOfPrimitives bag = gson.fromJson(json, BagOfPrimitives.class);
@@ -429,6 +502,7 @@ public class ObjectTest extends TestCase {
/**
* Created to reproduce issue 140
*/
+ @Test
public void testStringFieldWithEmptyValueSerialization() {
ClassWithEmptyStringFields target = new ClassWithEmptyStringFields();
target.a = "5794749";
@@ -441,6 +515,7 @@ public class ObjectTest extends TestCase {
/**
* Created to reproduce issue 140
*/
+ @Test
public void testStringFieldWithEmptyValueDeserialization() {
String json = "{a:\"5794749\",b:\"\",c:\"\"}";
ClassWithEmptyStringFields target = gson.fromJson(json, ClassWithEmptyStringFields.class);
@@ -455,6 +530,7 @@ public class ObjectTest extends TestCase {
String c = "";
}
+ @Test
public void testJsonObjectSerialization() {
Gson gson = new GsonBuilder().serializeNulls().create();
JsonObject obj = new JsonObject();
@@ -465,6 +541,7 @@ public class ObjectTest extends TestCase {
/**
* Test for issue 215.
*/
+ @Test
public void testSingletonLists() {
Gson gson = new Gson();
Product product = new Product();
@@ -494,6 +571,7 @@ public class ObjectTest extends TestCase {
}
// http://code.google.com/p/google-gson/issues/detail?id=270
+ @Test
public void testDateAsMapObjectField() {
HasObjectMap a = new HasObjectMap();
a.map.put("date", new Date(0));
@@ -514,6 +592,7 @@ public class ObjectTest extends TestCase {
* <p>Important: It is not documented that this is officially supported; this
* test just checks the current behavior.
*/
+ @Test
public void testStaticFieldSerialization() {
// By default Gson should ignore static fields
assertEquals("{}", gson.toJson(new ClassWithStaticField()));
@@ -536,6 +615,7 @@ public class ObjectTest extends TestCase {
* <p>Important: It is not documented that this is officially supported; this
* test just checks the current behavior.
*/
+ @Test
public void testStaticFieldDeserialization() {
// By default Gson should ignore static fields
gson.fromJson("{\"s\":\"custom\"}", ClassWithStaticField.class);
@@ -572,6 +652,7 @@ public class ObjectTest extends TestCase {
static final String s = "initial";
}
+ @Test
public void testThrowingDefaultConstructor() {
try {
gson.fromJson("{}", ClassWithThrowingConstructor.class);
diff --git a/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java b/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
index 58827b41..dc029f97 100644
--- a/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/PrettyPrintingTest.java
@@ -15,20 +15,22 @@
*/
package com.google.gson.functional;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.common.TestTypes.ArrayOfObjects;
import com.google.gson.common.TestTypes.BagOfPrimitives;
import com.google.gson.reflect.TypeToken;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for pretty printing option.
@@ -36,18 +38,18 @@ import com.google.gson.reflect.TypeToken;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class PrettyPrintingTest extends TestCase {
+public class PrettyPrintingTest {
private static final boolean DEBUG = false;
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new GsonBuilder().setPrettyPrinting().create();
}
+ @Test
public void testPrettyPrintList() {
BagOfPrimitives b = new BagOfPrimitives();
List<BagOfPrimitives> listOfB = new LinkedList<>();
@@ -59,18 +61,21 @@ public class PrettyPrintingTest extends TestCase {
print(json);
}
+ @Test
public void testPrettyPrintArrayOfObjects() {
ArrayOfObjects target = new ArrayOfObjects();
String json = gson.toJson(target);
print(json);
}
+ @Test
public void testPrettyPrintArrayOfPrimitives() {
int[] ints = new int[] { 1, 2, 3, 4, 5 };
String json = gson.toJson(ints);
assertEquals("[\n 1,\n 2,\n 3,\n 4,\n 5\n]", json);
}
+ @Test
public void testPrettyPrintArrayOfPrimitiveArrays() {
int[][] ints = new int[][] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 },
{ 9, 0 }, { 10 } };
@@ -79,6 +84,7 @@ public class PrettyPrintingTest extends TestCase {
+ "\n [\n 7,\n 8\n ],\n [\n 9,\n 0\n ],\n [\n 10\n ]\n]", json);
}
+ @Test
public void testPrettyPrintListOfPrimitiveArrays() {
List<Integer[]> list = Arrays.asList(new Integer[][] { { 1, 2 }, { 3, 4 },
{ 5, 6 }, { 7, 8 }, { 9, 0 }, { 10 } });
@@ -87,6 +93,7 @@ public class PrettyPrintingTest extends TestCase {
+ "\n [\n 7,\n 8\n ],\n [\n 9,\n 0\n ],\n [\n 10\n ]\n]", json);
}
+ @Test
public void testMap() {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("abc", 1);
@@ -96,6 +103,7 @@ public class PrettyPrintingTest extends TestCase {
}
// In response to bug 153
+ @Test
public void testEmptyMapField() {
ClassWithMap obj = new ClassWithMap();
obj.map = new LinkedHashMap<>();
@@ -109,6 +117,7 @@ public class PrettyPrintingTest extends TestCase {
int value = 2;
}
+ @Test
public void testMultipleArrays() {
int[][][] ints = new int[][][] { { { 1 }, { 2 } } };
String json = gson.toJson(ints);
diff --git a/gson/src/test/java/com/google/gson/functional/PrimitiveCharacterTest.java b/gson/src/test/java/com/google/gson/functional/PrimitiveCharacterTest.java
index 69ff1f3f..2f2891ac 100644
--- a/gson/src/test/java/com/google/gson/functional/PrimitiveCharacterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/PrimitiveCharacterTest.java
@@ -16,9 +16,11 @@
package com.google.gson.functional;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
import com.google.gson.Gson;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Java Character values.
@@ -26,21 +28,22 @@ import com.google.gson.Gson;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class PrimitiveCharacterTest extends TestCase {
+public class PrimitiveCharacterTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testPrimitiveCharacterAutoboxedSerialization() {
assertEquals("\"A\"", gson.toJson('A'));
assertEquals("\"A\"", gson.toJson('A', char.class));
assertEquals("\"A\"", gson.toJson('A', Character.class));
}
+ @Test
public void testPrimitiveCharacterAutoboxedDeserialization() {
char expected = 'a';
char actual = gson.fromJson("a", char.class);
diff --git a/gson/src/test/java/com/google/gson/functional/PrimitiveTest.java b/gson/src/test/java/com/google/gson/functional/PrimitiveTest.java
index c4c25f00..160690a8 100644
--- a/gson/src/test/java/com/google/gson/functional/PrimitiveTest.java
+++ b/gson/src/test/java/com/google/gson/functional/PrimitiveTest.java
@@ -17,6 +17,10 @@
package com.google.gson.functional;
import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -31,7 +35,8 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json primitive values: integers, and floating point numbers.
@@ -39,19 +44,20 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class PrimitiveTest extends TestCase {
+public class PrimitiveTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testPrimitiveIntegerAutoboxedSerialization() {
assertEquals("1", gson.toJson(1));
}
+ @Test
public void testPrimitiveIntegerAutoboxedDeserialization() {
int expected = 1;
int actual = gson.fromJson("1", int.class);
@@ -61,6 +67,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testByteSerialization() {
assertEquals("1", gson.toJson(1, byte.class));
assertEquals("1", gson.toJson(1, Byte.class));
@@ -71,6 +78,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("1", gson.toJson(1.5, Byte.class));
}
+ @Test
public void testByteDeserialization() {
Byte boxed = gson.fromJson("1", Byte.class);
assertEquals(1, (byte)boxed);
@@ -81,6 +89,7 @@ public class PrimitiveTest extends TestCase {
assertArrayEquals(new byte[] {-128, 0, 127, -1}, bytes);
}
+ @Test
public void testByteDeserializationLossy() {
try {
gson.fromJson("-129", byte.class);
@@ -104,6 +113,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testShortSerialization() {
assertEquals("1", gson.toJson(1, short.class));
assertEquals("1", gson.toJson(1, Short.class));
@@ -116,6 +126,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("1", gson.toJson(1.5, Short.class));
}
+ @Test
public void testShortDeserialization() {
Short boxed = gson.fromJson("1", Short.class);
assertEquals(1, (short)boxed);
@@ -126,6 +137,7 @@ public class PrimitiveTest extends TestCase {
assertArrayEquals(new short[] {-32768, 0, 32767, -1}, shorts);
}
+ @Test
public void testShortDeserializationLossy() {
try {
gson.fromJson("-32769", short.class);
@@ -149,6 +161,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testIntSerialization() {
assertEquals("1", gson.toJson(1, int.class));
assertEquals("1", gson.toJson(1, Integer.class));
@@ -161,6 +174,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("1", gson.toJson(1.5, Integer.class));
}
+ @Test
public void testLongSerialization() {
assertEquals("1", gson.toJson(1L, long.class));
assertEquals("1", gson.toJson(1L, Long.class));
@@ -172,6 +186,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("1", gson.toJson(1.5, Long.class));
}
+ @Test
public void testFloatSerialization() {
assertEquals("1.5", gson.toJson(1.5f, float.class));
assertEquals("1.5", gson.toJson(1.5f, Float.class));
@@ -186,6 +201,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("Infinity", gson.toJson(Double.MAX_VALUE, Float.class));
}
+ @Test
public void testDoubleSerialization() {
assertEquals("1.5", gson.toJson(1.5, double.class));
assertEquals("1.5", gson.toJson(1.5, Double.class));
@@ -197,6 +213,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(Double.toString(Long.MAX_VALUE - 10L), gson.toJson(Long.MAX_VALUE - 10L, Double.class));
}
+ @Test
public void testPrimitiveIntegerAutoboxedInASingleElementArraySerialization() {
int target[] = {-9332};
assertEquals("[-9332]", gson.toJson(target));
@@ -204,22 +221,26 @@ public class PrimitiveTest extends TestCase {
assertEquals("[-9332]", gson.toJson(target, Integer[].class));
}
+ @Test
public void testReallyLongValuesSerialization() {
long value = 333961828784581L;
assertEquals("333961828784581", gson.toJson(value));
}
+ @Test
public void testReallyLongValuesDeserialization() {
String json = "333961828784581";
long value = gson.fromJson(json, Long.class);
assertEquals(333961828784581L, value);
}
+ @Test
public void testPrimitiveLongAutoboxedSerialization() {
assertEquals("1", gson.toJson(1L, long.class));
assertEquals("1", gson.toJson(1L, Long.class));
}
+ @Test
public void testPrimitiveLongAutoboxedDeserialization() {
long expected = 1L;
long actual = gson.fromJson("1", long.class);
@@ -229,6 +250,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testPrimitiveLongAutoboxedInASingleElementArraySerialization() {
long[] target = {-23L};
assertEquals("[-23]", gson.toJson(target));
@@ -236,11 +258,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("[-23]", gson.toJson(target, Long[].class));
}
+ @Test
public void testPrimitiveBooleanAutoboxedSerialization() {
assertEquals("true", gson.toJson(true));
assertEquals("false", gson.toJson(false));
}
+ @Test
public void testBooleanDeserialization() {
boolean value = gson.fromJson("false", boolean.class);
assertEquals(false, value);
@@ -248,6 +272,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(true, value);
}
+ @Test
public void testPrimitiveBooleanAutoboxedInASingleElementArraySerialization() {
boolean target[] = {false};
assertEquals("[false]", gson.toJson(target));
@@ -255,6 +280,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("[false]", gson.toJson(target, Boolean[].class));
}
+ @Test
public void testNumberSerialization() {
Number expected = 1L;
String json = gson.toJson(expected);
@@ -264,6 +290,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected.toString(), json);
}
+ @Test
public void testNumberDeserialization() {
String json = "1";
Number expected = Integer.valueOf(json);
@@ -280,24 +307,28 @@ public class PrimitiveTest extends TestCase {
assertEquals(1L, actual.longValue());
}
+ @Test
public void testNumberAsStringDeserialization() {
Number value = gson.fromJson("\"18\"", Number.class);
assertEquals(18, value.intValue());
}
+ @Test
public void testPrimitiveDoubleAutoboxedSerialization() {
assertEquals("-122.08234335", gson.toJson(-122.08234335D));
assertEquals("122.08112002", gson.toJson(122.08112002D));
}
+ @Test
public void testPrimitiveDoubleAutoboxedDeserialization() {
double actual = gson.fromJson("-122.08858585", double.class);
- assertEquals(-122.08858585D, actual);
+ assertEquals(-122.08858585D, actual, 0);
actual = gson.fromJson("122.023900008000", Double.class);
- assertEquals(122.023900008D, actual);
+ assertEquals(122.023900008D, actual, 0);
}
+ @Test
public void testPrimitiveDoubleAutoboxedInASingleElementArraySerialization() {
double[] target = {-122.08D};
assertEquals("[-122.08]", gson.toJson(target));
@@ -305,6 +336,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("[-122.08]", gson.toJson(target, Double[].class));
}
+ @Test
public void testDoubleAsStringRepresentationDeserialization() {
String doubleValue = "1.0043E+5";
Double expected = Double.valueOf(doubleValue);
@@ -312,9 +344,10 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
double actual1 = gson.fromJson(doubleValue, double.class);
- assertEquals(expected.doubleValue(), actual1);
+ assertEquals(expected, actual1, 0);
}
+ @Test
public void testDoubleNoFractAsStringRepresentationDeserialization() {
String doubleValue = "1E+5";
Double expected = Double.valueOf(doubleValue);
@@ -322,22 +355,24 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
double actual1 = gson.fromJson(doubleValue, double.class);
- assertEquals(expected.doubleValue(), actual1);
+ assertEquals(expected, actual1, 0);
}
+ @Test
public void testDoubleArrayDeserialization() {
String json = "[0.0, 0.004761904761904762, 3.4013606962703525E-4, 7.936508173034305E-4,"
+ "0.0011904761904761906, 0.0]";
double[] values = gson.fromJson(json, double[].class);
- assertEquals(6, values.length);
- assertEquals(0.0, values[0]);
- assertEquals(0.004761904761904762, values[1]);
- assertEquals(3.4013606962703525E-4, values[2]);
- assertEquals(7.936508173034305E-4, values[3]);
- assertEquals(0.0011904761904761906, values[4]);
- assertEquals(0.0, values[5]);
+ assertEquals(6, values.length, 0);
+ assertEquals(0.0, values[0], 0);
+ assertEquals(0.004761904761904762, values[1], 0);
+ assertEquals(3.4013606962703525E-4, values[2], 0);
+ assertEquals(7.936508173034305E-4, values[3], 0);
+ assertEquals(0.0011904761904761906, values[4], 0);
+ assertEquals(0.0, values[5], 0);
}
+ @Test
public void testLargeDoubleDeserialization() {
String doubleValue = "1.234567899E8";
Double expected = Double.valueOf(doubleValue);
@@ -345,21 +380,24 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
double actual1 = gson.fromJson(doubleValue, double.class);
- assertEquals(expected.doubleValue(), actual1);
+ assertEquals(expected, actual1, 0);
}
+ @Test
public void testBigDecimalSerialization() {
BigDecimal target = new BigDecimal("-122.0e-21");
String json = gson.toJson(target);
assertEquals(target, new BigDecimal(json));
}
+ @Test
public void testBigDecimalDeserialization() {
BigDecimal target = new BigDecimal("-122.0e-21");
String json = "-122.0e-21";
assertEquals(target, gson.fromJson(json, BigDecimal.class));
}
+ @Test
public void testBigDecimalInASingleElementArraySerialization() {
BigDecimal[] target = {new BigDecimal("-122.08e-21")};
String json = gson.toJson(target);
@@ -371,18 +409,21 @@ public class PrimitiveTest extends TestCase {
assertEquals(target[0], new BigDecimal(actual));
}
+ @Test
public void testSmallValueForBigDecimalSerialization() {
BigDecimal target = new BigDecimal("1.55");
String actual = gson.toJson(target);
assertEquals(target.toString(), actual);
}
+ @Test
public void testSmallValueForBigDecimalDeserialization() {
BigDecimal expected = new BigDecimal("1.55");
BigDecimal actual = gson.fromJson("1.55", BigDecimal.class);
assertEquals(expected, actual);
}
+ @Test
public void testBigDecimalPreservePrecisionSerialization() {
String expectedValue = "1.000";
BigDecimal obj = new BigDecimal(expectedValue);
@@ -391,6 +432,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expectedValue, actualValue);
}
+ @Test
public void testBigDecimalPreservePrecisionDeserialization() {
String json = "1.000";
BigDecimal expected = new BigDecimal(json);
@@ -399,6 +441,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testBigDecimalAsStringRepresentationDeserialization() {
String doubleValue = "0.05E+5";
BigDecimal expected = new BigDecimal(doubleValue);
@@ -406,6 +449,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testBigDecimalNoFractAsStringRepresentationDeserialization() {
String doubleValue = "5E+5";
BigDecimal expected = new BigDecimal(doubleValue);
@@ -413,17 +457,20 @@ public class PrimitiveTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testBigIntegerSerialization() {
BigInteger target = new BigInteger("12121211243123245845384534687435634558945453489543985435");
assertEquals(target.toString(), gson.toJson(target));
}
+ @Test
public void testBigIntegerDeserialization() {
String json = "12121211243123245845384534687435634558945453489543985435";
BigInteger target = new BigInteger(json);
assertEquals(target, gson.fromJson(json, BigInteger.class));
}
+ @Test
public void testBigIntegerInASingleElementArraySerialization() {
BigInteger[] target = {new BigInteger("1212121243434324323254365345367456456456465464564564")};
String json = gson.toJson(target);
@@ -435,18 +482,21 @@ public class PrimitiveTest extends TestCase {
assertEquals(target[0], new BigInteger(actual));
}
+ @Test
public void testSmallValueForBigIntegerSerialization() {
BigInteger target = new BigInteger("15");
String actual = gson.toJson(target);
assertEquals(target.toString(), actual);
}
+ @Test
public void testSmallValueForBigIntegerDeserialization() {
BigInteger expected = new BigInteger("15");
BigInteger actual = gson.fromJson("15", BigInteger.class);
assertEquals(expected, actual);
}
+ @Test
public void testBadValueForBigIntegerDeserialization() {
try {
gson.fromJson("15.099", BigInteger.class);
@@ -454,18 +504,21 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) { }
}
+ @Test
public void testLazilyParsedNumberSerialization() {
LazilyParsedNumber target = new LazilyParsedNumber("1.5");
String actual = gson.toJson(target);
assertEquals("1.5", actual);
}
+ @Test
public void testLazilyParsedNumberDeserialization() {
LazilyParsedNumber expected = new LazilyParsedNumber("1.5");
LazilyParsedNumber actual = gson.fromJson("1.5", LazilyParsedNumber.class);
assertEquals(expected, actual);
}
+ @Test
public void testMoreSpecificSerialization() {
Gson gson = new Gson();
String expected = "This is a string";
@@ -480,6 +533,7 @@ public class PrimitiveTest extends TestCase {
return json.substring(json.indexOf('[') + 1, json.indexOf(']'));
}
+ @Test
public void testDoubleNaNSerializationNotSupportedByDefault() {
try {
double nan = Double.NaN;
@@ -494,6 +548,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDoubleNaNSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
double nan = Double.NaN;
@@ -501,11 +556,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("NaN", gson.toJson(Double.NaN));
}
+ @Test
public void testDoubleNaNDeserialization() {
assertTrue(Double.isNaN(gson.fromJson("NaN", Double.class)));
assertTrue(Double.isNaN(gson.fromJson("NaN", double.class)));
}
+ @Test
public void testFloatNaNSerializationNotSupportedByDefault() {
try {
float nan = Float.NaN;
@@ -520,6 +577,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testFloatNaNSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
float nan = Float.NaN;
@@ -527,11 +585,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("NaN", gson.toJson(Float.NaN));
}
+ @Test
public void testFloatNaNDeserialization() {
assertTrue(Float.isNaN(gson.fromJson("NaN", Float.class)));
assertTrue(Float.isNaN(gson.fromJson("NaN", float.class)));
}
+ @Test
public void testBigDecimalNaNDeserializationNotSupported() {
try {
gson.fromJson("NaN", BigDecimal.class);
@@ -540,6 +600,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDoubleInfinitySerializationNotSupportedByDefault() {
try {
double infinity = Double.POSITIVE_INFINITY;
@@ -554,6 +615,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDoubleInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
double infinity = Double.POSITIVE_INFINITY;
@@ -561,11 +623,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("Infinity", gson.toJson(Double.POSITIVE_INFINITY));
}
+ @Test
public void testDoubleInfinityDeserialization() {
assertTrue(Double.isInfinite(gson.fromJson("Infinity", Double.class)));
assertTrue(Double.isInfinite(gson.fromJson("Infinity", double.class)));
}
+ @Test
public void testFloatInfinitySerializationNotSupportedByDefault() {
try {
float infinity = Float.POSITIVE_INFINITY;
@@ -580,6 +644,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testFloatInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
float infinity = Float.POSITIVE_INFINITY;
@@ -587,11 +652,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("Infinity", gson.toJson(Float.POSITIVE_INFINITY));
}
+ @Test
public void testFloatInfinityDeserialization() {
assertTrue(Float.isInfinite(gson.fromJson("Infinity", Float.class)));
assertTrue(Float.isInfinite(gson.fromJson("Infinity", float.class)));
}
+ @Test
public void testBigDecimalInfinityDeserializationNotSupported() {
try {
gson.fromJson("Infinity", BigDecimal.class);
@@ -600,6 +667,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testNegativeInfinitySerializationNotSupportedByDefault() {
try {
double negativeInfinity = Double.NEGATIVE_INFINITY;
@@ -614,6 +682,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testNegativeInfinitySerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
double negativeInfinity = Double.NEGATIVE_INFINITY;
@@ -621,11 +690,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("-Infinity", gson.toJson(Double.NEGATIVE_INFINITY));
}
+ @Test
public void testNegativeInfinityDeserialization() {
assertTrue(Double.isInfinite(gson.fromJson("-Infinity", double.class)));
assertTrue(Double.isInfinite(gson.fromJson("-Infinity", Double.class)));
}
+ @Test
public void testNegativeInfinityFloatSerializationNotSupportedByDefault() {
try {
float negativeInfinity = Float.NEGATIVE_INFINITY;
@@ -640,6 +711,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testNegativeInfinityFloatSerialization() {
Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().create();
float negativeInfinity = Float.NEGATIVE_INFINITY;
@@ -647,11 +719,13 @@ public class PrimitiveTest extends TestCase {
assertEquals("-Infinity", gson.toJson(Float.NEGATIVE_INFINITY));
}
+ @Test
public void testNegativeInfinityFloatDeserialization() {
assertTrue(Float.isInfinite(gson.fromJson("-Infinity", float.class)));
assertTrue(Float.isInfinite(gson.fromJson("-Infinity", Float.class)));
}
+ @Test
public void testBigDecimalNegativeInfinityDeserializationNotSupported() {
try {
gson.fromJson("-Infinity", BigDecimal.class);
@@ -660,6 +734,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testLongAsStringSerialization() throws Exception {
gson = new GsonBuilder().setLongSerializationPolicy(LongSerializationPolicy.STRING).create();
String result = gson.toJson(15L);
@@ -670,6 +745,7 @@ public class PrimitiveTest extends TestCase {
assertEquals("2", result);
}
+ @Test
public void testLongAsStringDeserialization() throws Exception {
long value = gson.fromJson("\"15\"", long.class);
assertEquals(15, value);
@@ -679,6 +755,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(25, value);
}
+ @Test
public void testQuotedStringSerializationAndDeserialization() throws Exception {
String value = "String Blah Blah Blah...1, 2, 3";
String serializedForm = gson.toJson(value);
@@ -688,6 +765,7 @@ public class PrimitiveTest extends TestCase {
assertEquals(value, actual);
}
+ @Test
public void testUnquotedStringDeserializationFails() throws Exception {
assertEquals("UnquotedSingleWord", gson.fromJson("UnquotedSingleWord", String.class));
@@ -698,6 +776,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) { }
}
+ @Test
public void testHtmlCharacterSerialization() throws Exception {
String target = "<script>var a = 12;</script>";
String result = gson.toJson(target);
@@ -708,6 +787,7 @@ public class PrimitiveTest extends TestCase {
assertTrue(result.equals('"' + target + '"'));
}
+ @Test
public void testDeserializePrimitiveWrapperAsObjectField() {
String json = "{i:10}";
ClassWithIntegerField target = gson.fromJson(json, ClassWithIntegerField.class);
@@ -718,12 +798,14 @@ public class PrimitiveTest extends TestCase {
Integer i;
}
+ @Test
public void testPrimitiveClassLiteral() {
assertEquals(1, gson.fromJson("1", int.class).intValue());
assertEquals(1, gson.fromJson(new StringReader("1"), int.class).intValue());
assertEquals(1, gson.fromJson(new JsonPrimitive(1), int.class).intValue());
}
+ @Test
public void testDeserializeJsonObjectAsLongPrimitive() {
try {
gson.fromJson("{'abc':1}", long.class);
@@ -731,6 +813,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsLongWrapper() {
try {
gson.fromJson("[1,2,3]", Long.class);
@@ -738,6 +821,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsInt() {
try {
gson.fromJson("[1, 2, 3, 4]", int.class);
@@ -745,6 +829,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsInteger() {
try {
gson.fromJson("{}", Integer.class);
@@ -752,6 +837,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsShortPrimitive() {
try {
gson.fromJson("{'abc':1}", short.class);
@@ -759,6 +845,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsShortWrapper() {
try {
gson.fromJson("['a','b']", Short.class);
@@ -766,6 +853,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsDoublePrimitive() {
try {
gson.fromJson("[1,2]", double.class);
@@ -773,6 +861,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsDoubleWrapper() {
try {
gson.fromJson("{'abc':1}", Double.class);
@@ -780,6 +869,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsFloatPrimitive() {
try {
gson.fromJson("{'abc':1}", float.class);
@@ -787,6 +877,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsFloatWrapper() {
try {
gson.fromJson("[1,2,3]", Float.class);
@@ -794,6 +885,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsBytePrimitive() {
try {
gson.fromJson("{'abc':1}", byte.class);
@@ -801,6 +893,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsByteWrapper() {
try {
gson.fromJson("[1,2,3,4]", Byte.class);
@@ -808,6 +901,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsBooleanPrimitive() {
try {
gson.fromJson("{'abc':1}", boolean.class);
@@ -815,6 +909,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsBooleanWrapper() {
try {
gson.fromJson("[1,2,3,4]", Boolean.class);
@@ -822,6 +917,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsBigDecimal() {
try {
gson.fromJson("[1,2,3,4]", BigDecimal.class);
@@ -829,6 +925,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsBigDecimal() {
try {
gson.fromJson("{'a':1}", BigDecimal.class);
@@ -836,6 +933,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsBigInteger() {
try {
gson.fromJson("[1,2,3,4]", BigInteger.class);
@@ -843,6 +941,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsBigInteger() {
try {
gson.fromJson("{'c':2}", BigInteger.class);
@@ -850,6 +949,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonArrayAsNumber() {
try {
gson.fromJson("[1,2,3,4]", Number.class);
@@ -857,6 +957,7 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializeJsonObjectAsNumber() {
try {
gson.fromJson("{'c':2}", Number.class);
@@ -864,10 +965,12 @@ public class PrimitiveTest extends TestCase {
} catch (JsonSyntaxException expected) {}
}
+ @Test
public void testDeserializingDecimalPointValueZeroSucceeds() {
assertEquals(1, (int) gson.fromJson("1.0", Integer.class));
}
+ @Test
public void testDeserializingNonZeroDecimalPointValuesAsIntegerFails() {
try {
gson.fromJson("1.02", Byte.class);
@@ -891,6 +994,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDeserializingBigDecimalAsIntegerFails() {
try {
gson.fromJson("-122.08e-213", Integer.class);
@@ -899,6 +1003,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDeserializingBigIntegerAsInteger() {
try {
gson.fromJson("12121211243123245845384534687435634558945453489543985435", Integer.class);
@@ -907,6 +1012,7 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDeserializingBigIntegerAsLong() {
try {
gson.fromJson("12121211243123245845384534687435634558945453489543985435", Long.class);
@@ -915,29 +1021,33 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testValueVeryCloseToZeroIsZero() {
assertEquals(0, (byte) gson.fromJson("-122.08e-2132", byte.class));
assertEquals(0, (short) gson.fromJson("-122.08e-2132", short.class));
assertEquals(0, (int) gson.fromJson("-122.08e-2132", int.class));
assertEquals(0, (long) gson.fromJson("-122.08e-2132", long.class));
- assertEquals(-0.0f, gson.fromJson("-122.08e-2132", float.class));
- assertEquals(-0.0, gson.fromJson("-122.08e-2132", double.class));
- assertEquals(0.0f, gson.fromJson("122.08e-2132", float.class));
- assertEquals(0.0, gson.fromJson("122.08e-2132", double.class));
+ assertEquals(-0.0f, gson.fromJson("-122.08e-2132", float.class), 0);
+ assertEquals(-0.0, gson.fromJson("-122.08e-2132", double.class), 0);
+ assertEquals(0.0f, gson.fromJson("122.08e-2132", float.class), 0);
+ assertEquals(0.0, gson.fromJson("122.08e-2132", double.class), 0);
}
+ @Test
public void testDeserializingBigDecimalAsFloat() {
String json = "-122.08e-2132332";
float actual = gson.fromJson(json, float.class);
- assertEquals(-0.0f, actual);
+ assertEquals(-0.0f, actual, 0);
}
+ @Test
public void testDeserializingBigDecimalAsDouble() {
String json = "-122.08e-2132332";
double actual = gson.fromJson(json, double.class);
- assertEquals(-0.0d, actual);
+ assertEquals(-0.0d, actual, 0);
}
+ @Test
public void testDeserializingBigDecimalAsBigIntegerFails() {
try {
gson.fromJson("-122.08e-213", BigInteger.class);
@@ -946,12 +1056,14 @@ public class PrimitiveTest extends TestCase {
}
}
+ @Test
public void testDeserializingBigIntegerAsBigDecimal() {
BigDecimal actual =
gson.fromJson("12121211243123245845384534687435634558945453489543985435", BigDecimal.class);
assertEquals("12121211243123245845384534687435634558945453489543985435", actual.toPlainString());
}
+ @Test
public void testStringsAsBooleans() {
String json = "['true', 'false', 'TRUE', 'yes', '1']";
assertEquals(Arrays.asList(true, false, true, false, false),
diff --git a/gson/src/test/java/com/google/gson/functional/PrintFormattingTest.java b/gson/src/test/java/com/google/gson/functional/PrintFormattingTest.java
index 6801ba00..55d7606c 100644
--- a/gson/src/test/java/com/google/gson/functional/PrintFormattingTest.java
+++ b/gson/src/test/java/com/google/gson/functional/PrintFormattingTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
@@ -25,7 +28,8 @@ import com.google.gson.common.TestTypes.Nested;
import com.google.gson.common.TestTypes.PrimitiveArray;
import java.util.ArrayList;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for print formatting.
@@ -33,16 +37,16 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class PrintFormattingTest extends TestCase {
+public class PrintFormattingTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testCompactFormattingLeavesNoWhiteSpace() {
List<Object> list = new ArrayList<>();
list.add(new BagOfPrimitives());
@@ -54,6 +58,7 @@ public class PrintFormattingTest extends TestCase {
assertContainsNoWhiteSpace(json);
}
+ @Test
public void testJsonObjectWithNullValues() {
JsonObject obj = new JsonObject();
obj.addProperty("field1", "value1");
@@ -63,6 +68,7 @@ public class PrintFormattingTest extends TestCase {
assertFalse(json.contains("field2"));
}
+ @Test
public void testJsonObjectWithNullValuesSerialized() {
gson = new GsonBuilder().serializeNulls().create();
JsonObject obj = new JsonObject();
diff --git a/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java b/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
index 7876999d..6e7ada6e 100644
--- a/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
+++ b/gson/src/test/java/com/google/gson/functional/RawSerializationTest.java
@@ -15,41 +15,44 @@
*/
package com.google.gson.functional;
-import java.util.Arrays;
-import java.util.Collection;
-
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
+import java.util.Arrays;
+import java.util.Collection;
+import org.junit.Before;
+import org.junit.Test;
/**
* Unit tests to validate serialization of parameterized types without explicit types
*
* @author Inderjeet Singh
*/
-public class RawSerializationTest extends TestCase {
+public class RawSerializationTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testCollectionOfPrimitives() {
Collection<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
String json = gson.toJson(ints);
assertEquals("[1,2,3,4,5]", json);
}
+ @Test
public void testCollectionOfObjects() {
Collection<Foo> foos = Arrays.asList(new Foo(1), new Foo(2));
String json = gson.toJson(foos);
assertEquals("[{\"b\":1},{\"b\":2}]", json);
}
+ @Test
public void testParameterizedObject() {
Bar<Foo> bar = new Bar<>(new Foo(1));
String expectedJson = "{\"t\":{\"b\":1}}";
@@ -61,6 +64,7 @@ public class RawSerializationTest extends TestCase {
assertEquals(expectedJson, json);
}
+ @Test
public void testTwoLevelParameterizedObject() {
Bar<Bar<Foo>> bar = new Bar<>(new Bar<>(new Foo(1)));
String expectedJson = "{\"t\":{\"t\":{\"b\":1}}}";
@@ -72,6 +76,7 @@ public class RawSerializationTest extends TestCase {
assertEquals(expectedJson, json);
}
+ @Test
public void testThreeLevelParameterizedObject() {
Bar<Bar<Bar<Foo>>> bar = new Bar<>(new Bar<>(new Bar<>(new Foo(1))));
String expectedJson = "{\"t\":{\"t\":{\"t\":{\"b\":1}}}}";
diff --git a/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java b/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
index a04723b5..4862cda4 100644
--- a/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
@@ -15,6 +15,12 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonStreamParser;
@@ -30,7 +36,8 @@ import java.io.StringWriter;
import java.io.Writer;
import java.util.Arrays;
import java.util.Map;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for the support of {@link Reader}s and {@link Writer}s.
@@ -38,15 +45,15 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class ReadersWritersTest extends TestCase {
+public class ReadersWritersTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testWriterForSerialization() throws Exception {
Writer writer = new StringWriter();
BagOfPrimitives src = new BagOfPrimitives();
@@ -54,6 +61,7 @@ public class ReadersWritersTest extends TestCase {
assertEquals(src.getExpectedJson(), writer.toString());
}
+ @Test
public void testReaderForDeserialization() throws Exception {
BagOfPrimitives expected = new BagOfPrimitives();
Reader json = new StringReader(expected.getExpectedJson());
@@ -61,18 +69,21 @@ public class ReadersWritersTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testTopLevelNullObjectSerializationWithWriter() {
StringWriter writer = new StringWriter();
gson.toJson(null, writer);
assertEquals("null", writer.toString());
}
+ @Test
public void testTopLevelNullObjectDeserializationWithReader() {
StringReader reader = new StringReader("null");
Integer nullIntObject = gson.fromJson(reader, Integer.class);
assertNull(nullIntObject);
}
+ @Test
public void testTopLevelNullObjectSerializationWithWriterAndSerializeNulls() {
Gson gson = new GsonBuilder().serializeNulls().create();
StringWriter writer = new StringWriter();
@@ -80,6 +91,7 @@ public class ReadersWritersTest extends TestCase {
assertEquals("null", writer.toString());
}
+ @Test
public void testTopLevelNullObjectDeserializationWithReaderAndSerializeNulls() {
Gson gson = new GsonBuilder().serializeNulls().create();
StringReader reader = new StringReader("null");
@@ -87,6 +99,7 @@ public class ReadersWritersTest extends TestCase {
assertNull(nullIntObject);
}
+ @Test
public void testReadWriteTwoStrings() throws IOException {
Gson gson = new Gson();
CharArrayWriter writer = new CharArrayWriter();
@@ -100,6 +113,7 @@ public class ReadersWritersTest extends TestCase {
assertEquals("two", actualTwo);
}
+ @Test
public void testReadWriteTwoObjects() throws IOException {
Gson gson = new Gson();
CharArrayWriter writer = new CharArrayWriter();
@@ -116,6 +130,7 @@ public class ReadersWritersTest extends TestCase {
assertFalse(parser.hasNext());
}
+ @Test
public void testTypeMismatchThrowsJsonSyntaxExceptionForStrings() {
try {
gson.fromJson("true", new TypeToken<Map<String, String>>() {}.getType());
@@ -124,6 +139,7 @@ public class ReadersWritersTest extends TestCase {
}
}
+ @Test
public void testTypeMismatchThrowsJsonSyntaxExceptionForReaders() {
try {
gson.fromJson(new StringReader("true"), new TypeToken<Map<String, String>>() {}.getType());
@@ -136,6 +152,7 @@ public class ReadersWritersTest extends TestCase {
* Verifies that passing an {@link Appendable} which is not an instance of {@link Writer}
* to {@code Gson.toJson} works correctly.
*/
+ @Test
public void testToJsonAppendable() {
class CustomAppendable implements Appendable {
final StringBuilder stringBuilder = new StringBuilder();
diff --git a/gson/src/test/java/com/google/gson/functional/ReflectionAccessTest.java b/gson/src/test/java/com/google/gson/functional/ReflectionAccessTest.java
index 02649c5f..c731a8b5 100644
--- a/gson/src/test/java/com/google/gson/functional/ReflectionAccessTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ReflectionAccessTest.java
@@ -36,8 +36,8 @@ public class ReflectionAccessTest {
return classLoader.loadClass(c.getName());
}
- @Test
@SuppressWarnings("removal") // java.lang.SecurityManager deprecation in Java 17
+ @Test
public void testRestrictiveSecurityManager() throws Exception {
// Must use separate class loader, otherwise permission is not checked, see Class.getDeclaredFields()
Class<?> clazz = loadClassWithDifferentClassLoader(ClassWithPrivateMembers.class);
diff --git a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
index 0c6bd07a..c17cc54a 100644
--- a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
@@ -15,11 +15,7 @@
*/
package com.google.gson.functional;
-import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
@@ -33,11 +29,15 @@ import com.google.gson.internal.Streams;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
+import java.io.IOException;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.junit.Test;
/**
* Functional tests for the RuntimeTypeAdapterFactory feature in extras.
*/
-public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
+public final class RuntimeTypeAdapterFactoryFunctionalTest {
private final Gson gson = new Gson();
@@ -45,6 +45,7 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest extends TestCase {
* This test also ensures that {@link TypeAdapterFactory} registered through {@link JsonAdapter}
* work correctly for {@link Gson#getDelegateAdapter(TypeAdapterFactory, TypeToken)}.
*/
+ @Test
public void testSubclassesAutomaticallySerialized() throws Exception {
Shape shape = new Circle(25);
String json = gson.toJson(shape);
diff --git a/gson/src/test/java/com/google/gson/functional/SecurityTest.java b/gson/src/test/java/com/google/gson/functional/SecurityTest.java
index aa1c2d45..9e9272e1 100644
--- a/gson/src/test/java/com/google/gson/functional/SecurityTest.java
+++ b/gson/src/test/java/com/google/gson/functional/SecurityTest.java
@@ -16,18 +16,21 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.common.TestTypes.BagOfPrimitives;
-
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Tests for security-related aspects of Gson
*
* @author Inderjeet Singh
*/
-public class SecurityTest extends TestCase {
+public class SecurityTest {
/**
* Keep this in sync with Gson.JSON_NON_EXECUTABLE_PREFIX
*/
@@ -35,18 +38,19 @@ public class SecurityTest extends TestCase {
private GsonBuilder gsonBuilder;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gsonBuilder = new GsonBuilder();
}
+ @Test
public void testNonExecutableJsonSerialization() {
Gson gson = gsonBuilder.generateNonExecutableJson().create();
String json = gson.toJson(new BagOfPrimitives());
assertTrue(json.startsWith(JSON_NON_EXECUTABLE_PREFIX));
}
+ @Test
public void testNonExecutableJsonDeserialization() {
String json = JSON_NON_EXECUTABLE_PREFIX + "{longValue:1}";
Gson gson = gsonBuilder.create();
@@ -54,6 +58,7 @@ public class SecurityTest extends TestCase {
assertEquals(1, target.longValue);
}
+ @Test
public void testJsonWithNonExectuableTokenSerialization() {
Gson gson = gsonBuilder.generateNonExecutableJson().create();
String json = gson.toJson(JSON_NON_EXECUTABLE_PREFIX);
@@ -64,6 +69,7 @@ public class SecurityTest extends TestCase {
* Gson should be able to deserialize a stream with non-exectuable token even if it is created
* without {@link GsonBuilder#generateNonExecutableJson()}.
*/
+ @Test
public void testJsonWithNonExectuableTokenWithRegularGsonDeserialization() {
Gson gson = gsonBuilder.create();
String json = JSON_NON_EXECUTABLE_PREFIX + "{stringValue:')]}\\u0027\\n'}";
@@ -75,6 +81,7 @@ public class SecurityTest extends TestCase {
* Gson should be able to deserialize a stream with non-exectuable token if it is created
* with {@link GsonBuilder#generateNonExecutableJson()}.
*/
+ @Test
public void testJsonWithNonExectuableTokenWithConfiguredGsonDeserialization() {
// Gson should be able to deserialize a stream with non-exectuable token even if it is created
Gson gson = gsonBuilder.generateNonExecutableJson().create();
diff --git a/gson/src/test/java/com/google/gson/functional/SerializedNameTest.java b/gson/src/test/java/com/google/gson/functional/SerializedNameTest.java
index 0314ae0a..a1633700 100644
--- a/gson/src/test/java/com/google/gson/functional/SerializedNameTest.java
+++ b/gson/src/test/java/com/google/gson/functional/SerializedNameTest.java
@@ -15,20 +15,23 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
+import org.junit.Test;
-import junit.framework.TestCase;
-
-public final class SerializedNameTest extends TestCase {
+public final class SerializedNameTest {
private final Gson gson = new Gson();
+ @Test
public void testFirstNameIsChosenForSerialization() {
MyClass target = new MyClass("v1", "v2");
// Ensure name1 occurs exactly once, and name2 and name3 don't appear
assertEquals("{\"name\":\"v1\",\"name1\":\"v2\"}", gson.toJson(target));
}
+ @Test
public void testMultipleNamesDeserializedCorrectly() {
assertEquals("v1", gson.fromJson("{'name':'v1'}", MyClass.class).a);
@@ -38,6 +41,7 @@ public final class SerializedNameTest extends TestCase {
assertEquals("v3", gson.fromJson("{'name3':'v3'}", MyClass.class).b);
}
+ @Test
public void testMultipleNamesInTheSameString() {
// The last value takes precedence
assertEquals("v3", gson.fromJson("{'name1':'v1','name2':'v2','name3':'v3'}", MyClass.class).b);
diff --git a/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
index 68844120..ecd7dc35 100644
--- a/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/StreamingTypeAdaptersTest.java
@@ -16,6 +16,11 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
@@ -33,14 +38,15 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import junit.framework.TestCase;
+import org.junit.Test;
-public final class StreamingTypeAdaptersTest extends TestCase {
+public final class StreamingTypeAdaptersTest {
private Gson miniGson = new GsonBuilder().create();
private TypeAdapter<Truck> truckAdapter = miniGson.getAdapter(Truck.class);
private TypeAdapter<Map<String, Double>> mapAdapter
= miniGson.getAdapter(new TypeToken<Map<String, Double>>() {});
+ @Test
public void testSerialize() {
Truck truck = new Truck();
truck.passengers = Arrays.asList(new Person("Jesse", 29), new Person("Jodie", 29));
@@ -51,14 +57,16 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckAdapter.toJson(truck).replace('\"', '\''));
}
+ @Test
public void testDeserialize() throws IOException {
String json = "{'horsePower':300.0,"
+ "'passengers':[{'age':29,'name':'Jesse'},{'age':29,'name':'Jodie'}]}";
Truck truck = truckAdapter.fromJson(json.replace('\'', '\"'));
- assertEquals(300.0, truck.horsePower);
+ assertEquals(300.0, truck.horsePower, 0);
assertEquals(Arrays.asList(new Person("Jesse", 29), new Person("Jodie", 29)), truck.passengers);
}
+ @Test
public void testSerializeNullField() {
Truck truck = new Truck();
truck.passengers = null;
@@ -66,11 +74,13 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckAdapter.toJson(truck).replace('\"', '\''));
}
+ @Test
public void testDeserializeNullField() throws IOException {
Truck truck = truckAdapter.fromJson("{'horsePower':0.0,'passengers':null}".replace('\'', '\"'));
assertNull(truck.passengers);
}
+ @Test
public void testSerializeNullObject() {
Truck truck = new Truck();
truck.passengers = Arrays.asList((Person) null);
@@ -78,11 +88,13 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckAdapter.toJson(truck).replace('\"', '\''));
}
+ @Test
public void testDeserializeNullObject() throws IOException {
Truck truck = truckAdapter.fromJson("{'horsePower':0.0,'passengers':[null]}".replace('\'', '\"'));
assertEquals(Arrays.asList((Person) null), truck.passengers);
}
+ @Test
public void testSerializeWithCustomTypeAdapter() {
usePersonNameAdapter();
Truck truck = new Truck();
@@ -91,6 +103,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckAdapter.toJson(truck).replace('\"', '\''));
}
+ @Test
public void testDeserializeWithCustomTypeAdapter() throws IOException {
usePersonNameAdapter();
Truck truck = truckAdapter.fromJson("{'horsePower':0.0,'passengers':['Jesse','Jodie']}".replace('\'', '\"'));
@@ -111,6 +124,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckAdapter = miniGson.getAdapter(Truck.class);
}
+ @Test
public void testSerializeMap() {
Map<String, Double> map = new LinkedHashMap<>();
map.put("a", 5.0);
@@ -118,6 +132,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
assertEquals("{'a':5.0,'b':10.0}", mapAdapter.toJson(map).replace('"', '\''));
}
+ @Test
public void testDeserializeMap() throws IOException {
Map<String, Double> map = new LinkedHashMap<>();
map.put("a", 5.0);
@@ -125,23 +140,27 @@ public final class StreamingTypeAdaptersTest extends TestCase {
assertEquals(map, mapAdapter.fromJson("{'a':5.0,'b':10.0}".replace('\'', '\"')));
}
+ @Test
public void testSerialize1dArray() {
TypeAdapter<double[]> arrayAdapter = miniGson.getAdapter(new TypeToken<double[]>() {});
assertEquals("[1.0,2.0,3.0]", arrayAdapter.toJson(new double[]{ 1.0, 2.0, 3.0 }));
}
+ @Test
public void testDeserialize1dArray() throws IOException {
TypeAdapter<double[]> arrayAdapter = miniGson.getAdapter(new TypeToken<double[]>() {});
double[] array = arrayAdapter.fromJson("[1.0,2.0,3.0]");
assertTrue(Arrays.toString(array), Arrays.equals(new double[]{1.0, 2.0, 3.0}, array));
}
+ @Test
public void testSerialize2dArray() {
TypeAdapter<double[][]> arrayAdapter = miniGson.getAdapter(new TypeToken<double[][]>() {});
double[][] array = { {1.0, 2.0 }, { 3.0 } };
assertEquals("[[1.0,2.0],[3.0]]", arrayAdapter.toJson(array));
}
+ @Test
public void testDeserialize2dArray() throws IOException {
TypeAdapter<double[][]> arrayAdapter = miniGson.getAdapter(new TypeToken<double[][]>() {});
double[][] array = arrayAdapter.fromJson("[[1.0,2.0],[3.0]]");
@@ -149,6 +168,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
assertTrue(Arrays.toString(array), Arrays.deepEquals(expected, array));
}
+ @Test
public void testNullSafe() {
TypeAdapter<Person> typeAdapter = new TypeAdapter<Person>() {
@Override public Person read(JsonReader in) throws IOException {
@@ -179,11 +199,12 @@ public final class StreamingTypeAdaptersTest extends TestCase {
assertEquals("{\"horsePower\":1.0,\"passengers\":[null,\"jesse,30\"]}",
gson.toJson(truck, Truck.class));
truck = gson.fromJson(json, Truck.class);
- assertEquals(1.0D, truck.horsePower);
+ assertEquals(1.0D, truck.horsePower, 0);
assertNull(truck.passengers.get(0));
assertEquals("jesse", truck.passengers.get(1).name);
}
+ @Test
public void testSerializeRecursive() {
TypeAdapter<Node> nodeAdapter = miniGson.getAdapter(Node.class);
Node root = new Node("root");
@@ -195,6 +216,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
nodeAdapter.toJson(root).replace('"', '\''));
}
+ @Test
public void testFromJsonTree() {
JsonObject truckObject = new JsonObject();
truckObject.add("horsePower", new JsonPrimitive(300));
@@ -206,7 +228,7 @@ public final class StreamingTypeAdaptersTest extends TestCase {
truckObject.add("passengers", passengersArray);
Truck truck = truckAdapter.fromJsonTree(truckObject);
- assertEquals(300.0, truck.horsePower);
+ assertEquals(300.0, truck.horsePower, 0);
assertEquals(Arrays.asList(new Person("Jesse", 30)), truck.passengers);
}
diff --git a/gson/src/test/java/com/google/gson/functional/StringTest.java b/gson/src/test/java/com/google/gson/functional/StringTest.java
index 7dcf6f0f..80c73831 100644
--- a/gson/src/test/java/com/google/gson/functional/StringTest.java
+++ b/gson/src/test/java/com/google/gson/functional/StringTest.java
@@ -1,8 +1,10 @@
package com.google.gson.functional;
-import com.google.gson.Gson;
+import static org.junit.Assert.assertEquals;
-import junit.framework.TestCase;
+import com.google.gson.Gson;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests for Json serialization and deserialization of strings.
@@ -10,73 +12,83 @@ import junit.framework.TestCase;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class StringTest extends TestCase {
+public class StringTest {
private Gson gson;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testStringValueSerialization() throws Exception {
String value = "someRandomStringValue";
assertEquals('"' + value + '"', gson.toJson(value));
}
+ @Test
public void testStringValueDeserialization() throws Exception {
String value = "someRandomStringValue";
String actual = gson.fromJson("\"" + value + "\"", String.class);
assertEquals(value, actual);
}
+ @Test
public void testSingleQuoteInStringSerialization() throws Exception {
String valueWithQuotes = "beforeQuote'afterQuote";
String jsonRepresentation = gson.toJson(valueWithQuotes);
assertEquals(valueWithQuotes, gson.fromJson(jsonRepresentation, String.class));
}
+ @Test
public void testEscapedCtrlNInStringSerialization() throws Exception {
String value = "a\nb";
String json = gson.toJson(value);
assertEquals("\"a\\nb\"", json);
}
+ @Test
public void testEscapedCtrlNInStringDeserialization() throws Exception {
String json = "'a\\nb'";
String actual = gson.fromJson(json, String.class);
assertEquals("a\nb", actual);
}
+ @Test
public void testEscapedCtrlRInStringSerialization() throws Exception {
String value = "a\rb";
String json = gson.toJson(value);
assertEquals("\"a\\rb\"", json);
}
+ @Test
public void testEscapedCtrlRInStringDeserialization() throws Exception {
String json = "'a\\rb'";
String actual = gson.fromJson(json, String.class);
assertEquals("a\rb", actual);
}
+ @Test
public void testEscapedBackslashInStringSerialization() throws Exception {
String value = "a\\b";
String json = gson.toJson(value);
assertEquals("\"a\\\\b\"", json);
}
+ @Test
public void testEscapedBackslashInStringDeserialization() throws Exception {
String actual = gson.fromJson("'a\\\\b'", String.class);
assertEquals("a\\b", actual);
}
+ @Test
public void testSingleQuoteInStringDeserialization() throws Exception {
String value = "beforeQuote'afterQuote";
String actual = gson.fromJson("\"" + value + "\"", String.class);
assertEquals(value, actual);
}
+ @Test
public void testEscapingQuotesInStringSerialization() throws Exception {
String valueWithQuotes = "beforeQuote\"afterQuote";
String jsonRepresentation = gson.toJson(valueWithQuotes);
@@ -84,6 +96,7 @@ public class StringTest extends TestCase {
assertEquals(valueWithQuotes, target);
}
+ @Test
public void testEscapingQuotesInStringDeserialization() throws Exception {
String value = "beforeQuote\\\"afterQuote";
String actual = gson.fromJson("\"" + value + "\"", String.class);
@@ -91,12 +104,14 @@ public class StringTest extends TestCase {
assertEquals(expected, actual);
}
+ @Test
public void testStringValueAsSingleElementArraySerialization() throws Exception {
String[] target = {"abc"};
assertEquals("[\"abc\"]", gson.toJson(target));
assertEquals("[\"abc\"]", gson.toJson(target, String[].class));
}
+ @Test
public void testStringWithEscapedSlashDeserialization() {
String value = "/";
String json = "'\\/'";
@@ -107,6 +122,7 @@ public class StringTest extends TestCase {
/**
* Created in response to http://groups.google.com/group/google-gson/browse_thread/thread/2431d4a3d0d6cb23
*/
+ @Test
public void testAssignmentCharSerialization() {
String value = "abc=";
String json = gson.toJson(value);
@@ -116,6 +132,7 @@ public class StringTest extends TestCase {
/**
* Created in response to http://groups.google.com/group/google-gson/browse_thread/thread/2431d4a3d0d6cb23
*/
+ @Test
public void testAssignmentCharDeserialization() {
String json = "\"abc=\"";
String value = gson.fromJson(json, String.class);
@@ -126,12 +143,14 @@ public class StringTest extends TestCase {
assertEquals("abc=", value);
}
+ @Test
public void testJavascriptKeywordsInStringSerialization() {
String value = "null true false function";
String json = gson.toJson(value);
assertEquals("\"" + value + "\"", json);
}
+ @Test
public void testJavascriptKeywordsInStringDeserialization() {
String json = "'null true false function'";
String value = gson.fromJson(json, String.class);
diff --git a/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
index 3e261d56..1e772836 100644
--- a/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ToNumberPolicyFunctionalTest.java
@@ -16,12 +16,9 @@
package com.google.gson.functional;
-import java.lang.reflect.Type;
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.ToNumberPolicy;
@@ -29,9 +26,16 @@ import com.google.gson.ToNumberStrategy;
import com.google.gson.internal.LazilyParsedNumber;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
-import junit.framework.TestCase;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.junit.Test;
-public class ToNumberPolicyFunctionalTest extends TestCase {
+public class ToNumberPolicyFunctionalTest {
+ @Test
public void testDefault() {
Gson gson = new Gson();
assertEquals(null, gson.fromJson("null", Object.class));
@@ -40,6 +44,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(new LazilyParsedNumber("10"), gson.fromJson("10", Number.class));
}
+ @Test
public void testAsDoubles() {
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.DOUBLE)
@@ -51,6 +56,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(10.0, gson.fromJson("10", Number.class));
}
+ @Test
public void testAsLazilyParsedNumbers() {
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.LAZILY_PARSED_NUMBER)
@@ -62,6 +68,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(new LazilyParsedNumber("10"), gson.fromJson("10", Number.class));
}
+ @Test
public void testAsLongsOrDoubles() {
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
@@ -75,6 +82,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(10.0, gson.fromJson("10.0", Number.class));
}
+ @Test
public void testAsBigDecimals() {
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.BIG_DECIMAL)
@@ -90,6 +98,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(new BigDecimal("1e400"), gson.fromJson("1e400", BigDecimal.class));
}
+ @Test
public void testAsListOfLongsOrDoubles() {
Gson gson = new GsonBuilder()
.setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE)
@@ -107,6 +116,7 @@ public class ToNumberPolicyFunctionalTest extends TestCase {
assertEquals(expected, numbers);
}
+ @Test
public void testCustomStrategiesCannotAffectConcreteDeclaredNumbers() {
ToNumberStrategy fail = new ToNumberStrategy() {
@Override
diff --git a/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
index 006c6ebd..be079af0 100644
--- a/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TreeTypeAdaptersTest.java
@@ -16,6 +16,9 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -31,12 +34,13 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
/**
* Collection of functional tests for DOM tree based type adapters.
*/
-public class TreeTypeAdaptersTest extends TestCase {
+public class TreeTypeAdaptersTest {
private static final Id<Student> STUDENT1_ID = new Id<>("5", Student.class);
private static final Id<Student> STUDENT2_ID = new Id<>("6", Student.class);
private static final Student STUDENT1 = new Student(STUDENT1_ID, "first");
@@ -49,8 +53,8 @@ public class TreeTypeAdaptersTest extends TestCase {
private Gson gson;
private Course<HistoryCourse> course;
- @Override
- protected void setUp() {
+ @Before
+ public void setUp() {
gson = new GsonBuilder()
.registerTypeAdapter(Id.class, new IdTreeTypeAdapter())
.create();
@@ -58,6 +62,7 @@ public class TreeTypeAdaptersTest extends TestCase {
new Assignment<HistoryCourse>(null, null), Arrays.asList(STUDENT1, STUDENT2));
}
+ @Test
public void testSerializeId() {
String json = gson.toJson(course, TYPE_COURSE_HISTORY);
assertTrue(json.contains(String.valueOf(COURSE_ID.getValue())));
@@ -65,6 +70,7 @@ public class TreeTypeAdaptersTest extends TestCase {
assertTrue(json.contains(String.valueOf(STUDENT2_ID.getValue())));
}
+ @Test
public void testDeserializeId() {
String json = "{courseId:1,students:[{id:1,name:'first'},{id:6,name:'second'}],"
+ "numAssignments:4,assignment:{}}";
diff --git a/gson/src/test/java/com/google/gson/functional/TypeAdapterPrecedenceTest.java b/gson/src/test/java/com/google/gson/functional/TypeAdapterPrecedenceTest.java
index 5f881530..28120bf3 100644
--- a/gson/src/test/java/com/google/gson/functional/TypeAdapterPrecedenceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TypeAdapterPrecedenceTest.java
@@ -16,6 +16,8 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -29,9 +31,10 @@ import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.lang.reflect.Type;
-import junit.framework.TestCase;
+import org.junit.Test;
-public final class TypeAdapterPrecedenceTest extends TestCase {
+public final class TypeAdapterPrecedenceTest {
+ @Test
public void testNonstreamingFollowedByNonstreaming() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Foo.class, newSerializer("serializer 1"))
@@ -43,6 +46,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via deserializer 2", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testStreamingFollowedByStreaming() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Foo.class, newTypeAdapter("type adapter 1"))
@@ -52,6 +56,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via type adapter 2", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testSerializeNonstreamingTypeAdapterFollowedByStreamingTypeAdapter() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Foo.class, newSerializer("serializer"))
@@ -62,6 +67,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via type adapter", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testStreamingFollowedByNonstreaming() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Foo.class, newTypeAdapter("type adapter"))
@@ -72,6 +78,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via deserializer", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testStreamingHierarchicalFollowedByNonstreaming() {
Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Foo.class, newTypeAdapter("type adapter"))
@@ -82,6 +89,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via deserializer", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testStreamingFollowedByNonstreamingHierarchical() {
Gson gson = new GsonBuilder()
.registerTypeAdapter(Foo.class, newTypeAdapter("type adapter"))
@@ -92,6 +100,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via type adapter", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testStreamingHierarchicalFollowedByNonstreamingHierarchical() {
Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Foo.class, newSerializer("serializer"))
@@ -102,6 +111,7 @@ public final class TypeAdapterPrecedenceTest extends TestCase {
assertEquals("foo via type adapter", gson.fromJson("foo", Foo.class).name);
}
+ @Test
public void testNonstreamingHierarchicalFollowedByNonstreaming() {
Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Foo.class, newSerializer("hierarchical"))
diff --git a/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java b/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
index 25b9c343..e43fa5f7 100644
--- a/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
@@ -16,6 +16,8 @@
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -27,13 +29,14 @@ import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
-import junit.framework.TestCase;
+import org.junit.Test;
/**
* Test that the hierarchy adapter works when subtypes are used.
*/
-public final class TypeHierarchyAdapterTest extends TestCase {
+public final class TypeHierarchyAdapterTest {
+ @Test
public void testTypeHierarchy() {
Manager andy = new Manager();
andy.userid = "andy";
@@ -116,6 +119,7 @@ public final class TypeHierarchyAdapterTest extends TestCase {
((Manager) company.ceo.minions[2]).minions[1].userid);
}
+ @Test
public void testRegisterSuperTypeFirst() {
Gson gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Employee.class, new EmployeeAdapter())
@@ -132,6 +136,7 @@ public final class TypeHierarchyAdapterTest extends TestCase {
}
/** This behaviour changed in Gson 2.1; it used to throw. */
+ @Test
public void testRegisterSubTypeFirstAllowed() {
new GsonBuilder()
.registerTypeHierarchyAdapter(Manager.class, new ManagerAdapter())
diff --git a/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java b/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
index f9ef46b3..88b2d19d 100644
--- a/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TypeVariableTest.java
@@ -15,6 +15,8 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@@ -23,7 +25,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import junit.framework.TestCase;
+import org.junit.Test;
/**
* Functional test for Gson serialization and deserialization of
@@ -31,8 +33,9 @@ import junit.framework.TestCase;
*
* @author Joel Leitch
*/
-public class TypeVariableTest extends TestCase {
+public class TypeVariableTest {
+ @Test
public void testAdvancedTypeVariables() throws Exception {
Gson gson = new Gson();
Bar bar1 = new Bar("someString", 1, true);
@@ -48,6 +51,7 @@ public class TypeVariableTest extends TestCase {
assertEquals(bar1, bar2);
}
+ @Test
public void testTypeVariablesViaTypeParameter() throws Exception {
Gson gson = new Gson();
Foo<String, Integer> original = new Foo<>("e", 5, false);
@@ -59,6 +63,7 @@ public class TypeVariableTest extends TestCase {
assertEquals(original, gson.<Foo<String, Integer>>fromJson(json, type));
}
+ @Test
public void testBasicTypeVariables() throws Exception {
Gson gson = new Gson();
Blue blue1 = new Blue(true);
diff --git a/gson/src/test/java/com/google/gson/functional/UncategorizedTest.java b/gson/src/test/java/com/google/gson/functional/UncategorizedTest.java
index 0ac03803..58171de0 100644
--- a/gson/src/test/java/com/google/gson/functional/UncategorizedTest.java
+++ b/gson/src/test/java/com/google/gson/functional/UncategorizedTest.java
@@ -15,6 +15,11 @@
*/
package com.google.gson.functional;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@@ -23,13 +28,12 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.common.TestTypes.BagOfPrimitives;
import com.google.gson.common.TestTypes.ClassOverridingEquals;
-
import com.google.gson.reflect.TypeToken;
+import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
-import junit.framework.TestCase;
-
-import java.lang.reflect.Type;
+import org.junit.Before;
+import org.junit.Test;
/**
* Functional tests that do not fall neatly into any of the existing classification.
@@ -37,16 +41,16 @@ import java.lang.reflect.Type;
* @author Inderjeet Singh
* @author Joel Leitch
*/
-public class UncategorizedTest extends TestCase {
+public class UncategorizedTest {
private Gson gson = null;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
gson = new Gson();
}
+ @Test
public void testInvalidJsonDeserializationFails() throws Exception {
try {
gson.fromJson("adfasdf1112,,,\":", BagOfPrimitives.class);
@@ -59,6 +63,7 @@ public class UncategorizedTest extends TestCase {
} catch (JsonParseException expected) { }
}
+ @Test
public void testObjectEqualButNotSameSerialization() throws Exception {
ClassOverridingEquals objA = new ClassOverridingEquals();
ClassOverridingEquals objB = new ClassOverridingEquals();
@@ -67,11 +72,13 @@ public class UncategorizedTest extends TestCase {
assertEquals(objB.getExpectedJson(), json);
}
+ @Test
public void testStaticFieldsAreNotSerialized() {
BagOfPrimitives target = new BagOfPrimitives();
assertFalse(gson.toJson(target).contains("DEFAULT_VALUE"));
}
+ @Test
public void testGsonInstanceReusableForSerializationAndDeserialization() {
BagOfPrimitives bag = new BagOfPrimitives();
String json = gson.toJson(bag);
@@ -84,6 +91,7 @@ public class UncategorizedTest extends TestCase {
* base class object. For a motivation for this test, see Issue 37 and
* http://groups.google.com/group/google-gson/browse_thread/thread/677d56e9976d7761
*/
+ @Test
public void testReturningDerivedClassesDuringDeserialization() {
Gson gson = new GsonBuilder().registerTypeAdapter(Base.class, new BaseTypeAdapter()).create();
String json = "{\"opType\":\"OP1\"}";
@@ -101,6 +109,7 @@ public class UncategorizedTest extends TestCase {
* Test that trailing whitespace is ignored.
* http://code.google.com/p/google-gson/issues/detail?id=302
*/
+ @Test
public void testTrailingWhitespace() throws Exception {
List<Integer> integers = gson.fromJson("[1,2,3] \n\n ",
new TypeToken<List<Integer>>() {}.getType());