From 01bd0d92e2838d3a42cfa322dc406f6f0a5f8483 Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Wed, 12 Sep 2012 05:06:48 +0000 Subject: [PATCH] Tests for LinkedTreeMap with incompatible keys. --- .../google/gson/internal/LinkedTreeMap.java | 1 - .../gson/internal/LinkedTreeMapTest.java | 25 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java index b8d4bf9e..bc8b45d0 100644 --- a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java +++ b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java @@ -164,7 +164,6 @@ public final class LinkedTreeMap extends AbstractMap implements Seri } } - // TODO(jwilson): don't throw ClassCastExceptions on unknown types @SuppressWarnings("unchecked") // this method throws ClassCastExceptions! Node findByObject(Object key) { return key != null ? find((K) key, false) : null; diff --git a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java index 50161918..a559dc21 100644 --- a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java +++ b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java @@ -45,7 +45,30 @@ public final class LinkedTreeMapTest extends TestCase { assertIterationOrder(map.keySet(), "a", "c"); } - // TODO: test contains with non-string key + public void testPutNullKeyFails() { + LinkedTreeMap map = new LinkedTreeMap(); + try { + map.put(null, "android"); + fail(); + } catch (NullPointerException expected) { + } + } + + public void testContainsNullKeyFails() { + LinkedTreeMap map = new LinkedTreeMap(); + map.put("a", "android"); + assertFalse(map.containsKey(null)); + } + + public void testContainsNonComparableKeyThrows() { + LinkedTreeMap map = new LinkedTreeMap(); + map.put("a", "android"); + try { + map.containsKey(new Object()); + fail(); + } catch (ClassCastException expected) { + } + } private void assertIterationOrder(Iterable actual, T... expected) { ArrayList actualList = new ArrayList();