package com.alibaba.fastjson.serializer;
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.logging.Logger;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.util.IOUtils;
public class SerializeWriterTest {
private final Logger logger = Logger.getLogger(SerializeWriterTest.class.getSimpleName());
private final ByteArrayOutputStream baos = new ByteArrayOutputStream();
private final SerializeWriter writer = new SerializeWriter(new OutputStreamWriter(baos));
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testWriteLiteBasicStr() throws UnsupportedEncodingException {
String targetStr = new String(IOUtils.DIGITS);
this.doTestWrite(targetStr);
}
private String doTestWrite(String input) throws UnsupportedEncodingException {
writer.writeString(input, (char) 0);
writer.flush();
String result = this.baos.toString("UTF-8");
Assert.assertEquals(input, JSON.parse(result));
logger.info(result);
return result;
}
@Test
public void testWriteLiteSpecilaStr() throws UnsupportedEncodingException {
this.doTestWrite(this.makeSpecialChars());
}
private String makeSpecialChars() {
StringBuilder strBuilder = new StringBuilder(128);
for (char c = 128; c <= 160; c++) {
strBuilder.append(c);
}
return strBuilder.toString();
}
@Test
public void testWriteLargeBasicStr() throws UnsupportedEncodingException {
String tmp = new String(IOUtils.DIGITS);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 200; i++) {
builder.append(tmp);
}
this.doTestWrite(builder.toString());
}
@Test
public void testWriteLargeSpecialStr() throws UnsupportedEncodingException {
String tmp = this.makeSpecialChars();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 200; i++) {
builder.append(tmp);
}
this.doTestWrite(builder.toString());
}
}