aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinder123 <inder123@2534bb62-2c4b-0410-85e8-b5006b95c4ae>2012-10-11 20:29:40 +0000
committerinder123 <inder123@2534bb62-2c4b-0410-85e8-b5006b95c4ae>2012-10-11 20:29:40 +0000
commitdff554679064a2f28321da3bfa556406e1b6a9d0 (patch)
treefe6cc4767f8963263bb4919d10b3c5142c368484
parent9f49203a124a26c6c16c71cc0bd97e24549551da (diff)
downloadandroid_external_gson-dff554679064a2f28321da3bfa556406e1b6a9d0.tar.gz
android_external_gson-dff554679064a2f28321da3bfa556406e1b6a9d0.tar.bz2
android_external_gson-dff554679064a2f28321da3bfa556406e1b6a9d0.zip
added tests for using intercept in fields and lists. These tests are currently failing.
git-svn-id: http://google-gson.googlecode.com/svn/trunk/gson@1211 2534bb62-2c4b-0410-85e8-b5006b95c4ae
-rw-r--r--src/test/java/com/google/gson/functional/InterceptorTest.java57
1 files changed, 40 insertions, 17 deletions
diff --git a/src/test/java/com/google/gson/functional/InterceptorTest.java b/src/test/java/com/google/gson/functional/InterceptorTest.java
index eb37da1f..e1b60757 100644
--- a/src/test/java/com/google/gson/functional/InterceptorTest.java
+++ b/src/test/java/com/google/gson/functional/InterceptorTest.java
@@ -15,11 +15,15 @@
*/
package com.google.gson.functional;
+import java.util.List;
+
import junit.framework.TestCase;
import com.google.gson.Gson;
+import com.google.gson.JsonParseException;
import com.google.gson.internal.alpha.Intercept;
import com.google.gson.internal.alpha.JsonPostDeserializer;
+import com.google.gson.reflect.TypeToken;
/**
* Unit tests for {@link Intercept} and {@link JsonPostDeserializer}.
@@ -36,29 +40,48 @@ public final class InterceptorTest extends TestCase {
this.gson = new Gson();
}
- public void testPostDeserialize() {
- MyObject target = gson.fromJson("{}", MyObject.class);
- assertEquals(MyObject.DEFAULT_VALUE, target.value);
- assertEquals(MyObject.DEFAULT_MESSAGE, target.message);
+ public void testExceptionsPropagated() {
+ try {
+ gson.fromJson("{}", User.class);
+ fail();
+ } catch (JsonParseException expected) {}
}
- @Intercept(postDeserialize = MyObjectInterceptor.class)
- private static final class MyObject {
- static final int DEFAULT_VALUE = 10;
- static final String DEFAULT_MESSAGE = "hello";
+ public void testPostDeserializeTopLevelClass() {
+ User user = gson.fromJson("{name:'bob',password:'pwd'}", User.class);
+ assertEquals(User.DEFAULT_EMAIL, user.email);
+ }
- int value = 0;
- String message = null;
+ public void testPostDeserializeList() {
+ List<User> list = gson.fromJson("[{name:'bob',password:'pwd'}]", new TypeToken<List<User>>(){}.getType());
+ User user = list.get(0);
+ assertEquals(User.DEFAULT_EMAIL, user.email);
}
- private static final class MyObjectInterceptor implements JsonPostDeserializer<MyObject> {
- public void postDeserialize(MyObject o) {
- if (o.value == 0) {
- o.value = MyObject.DEFAULT_VALUE;
- }
- if (o.message == null) {
- o.message = MyObject.DEFAULT_MESSAGE;
+ public void testPostDeserializeField() {
+ UserGroup userGroup = gson.fromJson("{user:{name:'bob',password:'pwd'}}", UserGroup.class);
+ assertEquals(User.DEFAULT_EMAIL, userGroup.user.email);
+ }
+
+ private static final class UserGroup {
+ User user;
+ String city;
+ }
+
+ @Intercept(postDeserialize = UserValidator.class)
+ private static final class User {
+ static final String DEFAULT_EMAIL = "invalid@invalid.com";
+ String name;
+ String password;
+ String email;
+ }
+
+ private static final class UserValidator implements JsonPostDeserializer<User> {
+ public void postDeserialize(User user) {
+ if (user.name == null || user.password == null) {
+ throw new JsonParseException("name and password are required fields.");
}
+ if (user.email == null) user.email = User.DEFAULT_EMAIL;
}
}
} \ No newline at end of file