content: 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 {
  
      }
  }
  