package com.alibaba.json.bvt;
import java.io.StringReader;
import java.util.Map;
import org.junit.Assert;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONReader;
import com.alibaba.fastjson.TypeReference;
import junit.framework.TestCase;
public class EnumFieldTest extends TestCase {
public void test_special() throws Exception {
JSONReader read = new JSONReader(new StringReader("{\"value\":1}"));
Model model = read.readObject(Model.class);
Assert.assertEquals(Type.B, model.value);
read.close();
}
public void test_1() throws Exception {
JSONReader read = new JSONReader(new StringReader("{\"value\":\"A\",\"value1\":\"B\"}"));
Model model = read.readObject(Model.class);
Assert.assertEquals(Type.A, model.value);
Assert.assertEquals(Type.B, model.value1);
read.close();
}
public void test_map() throws Exception {
JSONReader read = new JSONReader(new StringReader("{\"model\":{\"value\":\"A\",\"value1\":\"B\"}}"));
Map<String, Model> map = read.readObject(new TypeReference<Map<String, Model>>(){});
Model model = (Model) map.get("model");
Assert.assertEquals(Type.A, model.value);
Assert.assertEquals(Type.B, model.value1);
read.close();
}
public void test_error() throws Exception {
Exception error = null;
try {
JSONReader read = new JSONReader(new StringReader("{\"value\":\"a\\b\"}"));
read.readObject(Model.class);
} catch (JSONException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
public void test_error_1() throws Exception {
Exception error = null;
try {
JSONReader read = new JSONReader(new StringReader("{\"value\":\"A\",\"value1\":\"B\"["));
Model model = read.readObject(Model.class);
read.readObject(Model.class);
} catch (JSONException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
public void test_error_2() throws Exception {
Exception error = null;
try {
JSONReader read = new JSONReader(new StringReader("{\"model\":{\"value\":\"A\",\"value1\":\"B\"}["));
Map<String, Model> map = read.readObject(new TypeReference<Map<String, Model>>(){});
read.readObject(Model.class);
} catch (JSONException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
private static class Model {
public Type value;
public Type value1;
}
public static enum Type {
A, B, C
}
}