package com.alibaba.json.bvt.serializer;
import java.util.Enumeration;
import java.util.Vector;
import junit.framework.TestCase;
import org.junit.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class EnumerationSeriliazerTest extends TestCase {
public void test_nullAsEmtpyList() throws Exception {
VO e = new VO();
Assert.assertEquals("{\"elements\":[]}", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty));
}
public void test_null() throws Exception {
VO e = new VO();
Assert.assertEquals("{\"elements\":null}", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue));
}
public void test_1() throws Exception {
VO e = new VO(new Entity(), new Entity());
Assert.assertEquals("{\"elements\":[{},{}]}", JSON.toJSONString(e, SerializerFeature.WriteMapNullValue));
}
public void test_2() throws Exception {
VO e = new VO(new Entity(), new Entity2());
Assert.assertEquals("{\"elements\":[{},{\"@type\":\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity2\"}]}",
JSON.toJSONString(e, SerializerFeature.WriteClassName,
SerializerFeature.NotWriteRootClassName));
}
public void test_3() throws Exception {
VO2 e = new VO2(new Entity(), new Entity());
Assert.assertEquals("{\"elements\":[{},{}]}", JSON.toJSONString(e, SerializerFeature.WriteClassName,
SerializerFeature.NotWriteRootClassName));
}
public void test_4() throws Exception {
VO3 e = new VO3(new Entity(), new Entity2());
Assert.assertEquals("{\"elements\":[{\"@type\":\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity\"},{\"@type\":\"com.alibaba.json.bvt.serializer.EnumerationSeriliazerTest$Entity2\"}]}", JSON.toJSONString(e, SerializerFeature.WriteClassName,
SerializerFeature.NotWriteRootClassName));
}
private static class VO {
private Enumeration<Entity> elements;
public VO(Entity... array){
if (array.length > 0) {
Vector<Entity> vector = new Vector<Entity>();
for (Entity item : array) {
vector.add(item);
}
this.elements = vector.elements();
}
}
public Enumeration<Entity> getElements() {
return elements;
}
public void setElements(Enumeration<Entity> elements) {
this.elements = elements;
}
}
private static class VO2 extends IVO2<Entity> {
public VO2(Entity... array){
if (array.length > 0) {
Vector<Entity> vector = new Vector<Entity>();
for (Entity item : array) {
vector.add(item);
}
this.elements = vector.elements();
}
}
}
private static class VO3 {
private Enumeration elements;
public VO3(Entity... array){
if (array.length > 0) {
Vector<Entity> vector = new Vector<Entity>();
for (Entity item : array) {
vector.add(item);
}
this.elements = vector.elements();
}
}
public Enumeration getElements() {
return elements;
}
public void setElements(Enumeration elements) {
this.elements = elements;
}
}
private static abstract class IVO2<T> {
protected Enumeration<Entity> elements;
public Enumeration<Entity> getElements() {
return elements;
}
public void setElements(Enumeration<Entity> elements) {
this.elements = elements;
}
}
public static class Entity {
}
public static class Entity2 extends Entity {
}
}