Show default serialization and deserialization works with subclasses of an enum type.

This commit is contained in:
Joel Leitch 2011-04-04 19:19:46 +00:00
parent 5af0b16641
commit 21ddfc9b12

View File

@ -16,14 +16,6 @@
package com.google.gson.functional;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
import java.util.Set;
import junit.framework.TestCase;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@ -36,6 +28,14 @@ import com.google.gson.JsonSerializer;
import com.google.gson.common.MoreAsserts;
import com.google.gson.reflect.TypeToken;
import junit.framework.TestCase;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
import java.util.Set;
/**
* Functional tests for Java 5.0 enums.
*
@ -140,6 +140,20 @@ public class EnumTest extends TestCase {
gson.fromJson("[\"123ROCK\",\"123PAPER\",\"123SCISSORS\"]", new TypeToken<Set<Roshambo>>() {}.getType()));
}
public void testEnumSubclassAsParameterizedType() {
Collection<Roshambo> list = new ArrayList<Roshambo>();
list.add(Roshambo.ROCK);
list.add(Roshambo.PAPER);
String json = gson.toJson(list);
assertEquals("[\"ROCK\",\"PAPER\"]", json);
Type collectionType = new TypeToken<Collection<Roshambo>>() {}.getType();
Collection<Roshambo> actualJsonList = gson.fromJson(json, collectionType);
MoreAsserts.assertContains(actualJsonList, Roshambo.ROCK);
MoreAsserts.assertContains(actualJsonList, Roshambo.PAPER);
}
public enum Roshambo {
ROCK {
@Override Roshambo defeats() {