package com.alibaba.json.bvt.bug;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializeWriter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import junit.framework.TestCase;
public class Issue771 extends TestCase {
public void test_for_issue() throws Exception {
SerializeWriter writer = new SerializeWriter(null, JSON.DEFAULT_GENERATE_FEATURE, new SerializerFeature[0]);
int defaultBufferSize = writer.getBufferLength();
String encoded = JSON.toJSONString(new FooBar(defaultBufferSize));
JSONObject decoded = (JSONObject) JSON.parse(encoded);
JSONArray dataToEncode = decoded.getJSONArray("dataToEncode");
Assert.assertEquals(5, dataToEncode.size());
writer.close();
}
public static class FooBar {
private List<String> dataToEncode;
protected FooBar(int buffLen){
dataToEncode = new ArrayList<String>();
dataToEncode.add("foo");
dataToEncode.add("bar");
dataToEncode.add(new String(new char[buffLen]).replace('\0', 'a')); // create some texts to fill up & expand
// the buffer
dataToEncode.add("a wild special character appears: áőű"); // this will restart the list encoding (while the
// count is committed at expand)
dataToEncode.add("foobar");
}
public List<String> getDataToEncode() {
return dataToEncode;
}
}
}