From 4fc6400f5c31c0731f950fd617c4a55f57303c56 Mon Sep 17 00:00:00 2001 From: Inderjeet Singh Date: Thu, 12 Mar 2009 18:17:14 +0000 Subject: [PATCH] Fixed the test that broke while fixing issue 100 in r394 by using a TreeSet for SortedSets and HashSet for other kind of sets. --- .../com/google/gson/DefaultTypeAdapters.java | 13 ++++- .../google/gson/functional/ObjectTest.java | 47 +++++++++++++++++-- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java b/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java index 9fd2c227..3a036125 100644 --- a/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java +++ b/gson/src/main/java/com/google/gson/DefaultTypeAdapters.java @@ -80,6 +80,7 @@ final class DefaultTypeAdapters { private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter(); private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator(); + private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator(); private static final HashSetCreator HASH_SET_CREATOR = new HashSetCreator(); private static final GregorianCalendarTypeAdapter GREGORIAN_CALENDAR_TYPE_ADAPTER = new GregorianCalendarTypeAdapter(); @@ -180,7 +181,7 @@ final class DefaultTypeAdapters { map.register(Queue.class, COLLECTION_TYPE_ADAPTER); map.register(Set.class, HASH_SET_CREATOR); - map.register(SortedSet.class, HASH_SET_CREATOR); + map.register(SortedSet.class, TREE_SET_CREATOR); map.register(Properties.class, PROPERTIES_CREATOR); map.makeUnmodifiable(); return map; @@ -780,6 +781,16 @@ final class DefaultTypeAdapters { } } + private static class TreeSetCreator implements InstanceCreator> { + public TreeSet createInstance(Type type) { + return new TreeSet(); + } + @Override + public String toString() { + return TreeSetCreator.class.getSimpleName(); + } + } + private static class HashSetCreator implements InstanceCreator> { public HashSet createInstance(Type type) { return new HashSet(); 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 d4b99385..530b0304 100644 --- a/gson/src/test/java/com/google/gson/functional/ObjectTest.java +++ b/gson/src/test/java/com/google/gson/functional/ObjectTest.java @@ -272,9 +272,12 @@ public class ObjectTest extends TestCase { 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\"]" + "}"; - ClassWithSubInterfacesOfCollection target = gson.fromJson( - json, ClassWithSubInterfacesOfCollection.class); - assertEquals(json, target.getExpectedJson()); + ClassWithSubInterfacesOfCollection target = + gson.fromJson(json, ClassWithSubInterfacesOfCollection.class); + assertTrue(target.listContains(0, 1, 2, 3)); + assertTrue(target.queueContains(0, 1, 2, 3)); + assertTrue(target.setContains(0.1F, 0.2F, 0.3F, 0.4F)); + assertTrue(target.sortedSetContains('a', 'b', 'c', 'd')); } /** @@ -403,7 +406,7 @@ public class ObjectTest extends TestCase { } } - public static class ClassWithSubInterfacesOfCollection { + private static class ClassWithSubInterfacesOfCollection { private List list; private Queue queue; private Set set; @@ -420,6 +423,42 @@ public class ObjectTest extends TestCase { this.sortedSet = sortedSet; } + boolean listContains(int... values) { + for (int value : values) { + if (!list.contains(value)) { + return false; + } + } + return true; + } + + boolean queueContains(long... values) { + for (long value : values) { + if (!queue.contains(value)) { + return false; + } + } + return true; + } + + boolean setContains(float... values) { + for (float value : values) { + if (!set.contains(value)) { + return false; + } + } + return true; + } + + boolean sortedSetContains(char... values) { + for (char value : values) { + if (!sortedSet.contains(value)) { + return false; + } + } + return true; + } + public String getExpectedJson() { StringBuilder sb = new StringBuilder(); sb.append("{");