package com.alibaba.json.bvt.serializer;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.Writer;
import java.sql.Clob;
import java.sql.SQLException;
import junit.framework.TestCase;
import org.junit.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class ClobSeriliazerTest extends TestCase {
public void test_clob() throws Exception {
Assert.assertEquals("\"abcdefg中国\"",
JSON.toJSONString(new MockClob("abcdefg中国")));
}
public void test_clob_null() throws Exception {
Assert.assertEquals("{\"value\":null}", JSON.toJSONString(new VO(),
SerializerFeature.WriteMapNullValue));
}
public void test_clob_error() throws Exception {
Exception error = null;
try {
JSON.toJSONString(new MockClob(new SQLException()));
} catch (Exception ex) {
error = ex;
}
Assert.assertNotNull(error);
}
@SuppressWarnings("unused")
private static class VO {
private Clob value;
public Clob getValue() {
return value;
}
public void setValue(Clob value) {
this.value = value;
}
}
public static class MockClob implements Clob {
private final String text;
private SQLException error;
public MockClob(String text) {
this.text = text;
}
public MockClob(SQLException error) {
this.text = null;
this.error = error;
}
public SQLException getError() {
return error;
}
public void setError(SQLException error) {
this.error = error;
}
public long length() throws SQLException {
// TODO Auto-generated method stub
return 0;
}
public String getSubString(long pos, int length) throws SQLException {
// TODO Auto-generated method stub
return null;
}
public Reader getCharacterStream() throws SQLException {
if (error != null) {
throw error;
}
return new StringReader(text);
}
public InputStream getAsciiStream() throws SQLException {
// TODO Auto-generated method stub
return null;
}
public long position(String searchstr, long start) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
public long position(Clob searchstr, long start) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
public int setString(long pos, String str) throws SQLException {
// TODO Auto-generated method stub
return 0;
}
public int setString(long pos, String str, int offset, int len)
throws SQLException {
// TODO Auto-generated method stub
return 0;
}
public OutputStream setAsciiStream(long pos) throws SQLException {
// TODO Auto-generated method stub
return null;
}
public Writer setCharacterStream(long pos) throws SQLException {
// TODO Auto-generated method stub
return null;
}
public void truncate(long len) throws SQLException {
// TODO Auto-generated method stub
}
public void free() throws SQLException {
// TODO Auto-generated method stub
}
public Reader getCharacterStream(long pos, long length)
throws SQLException {
// TODO Auto-generated method stub
return null;
}
}
}