package net.varkhan.base.conversion.serializer.primitives; import junit.framework.TestCase; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.nio.ByteBuffer; import java.util.Random; /** * <b></b>. * <p/> * * @author varkhan * @date 2/6/11 * @time 5:57 AM */ public class StringSerializerTest extends TestCase { public void testStringIS() { StringSerializer<Object> s=new StringSerializer<Object>(); Random rand=new Random(); String[] as=new String[(int) (rand.nextFloat()*1000)]; for(int i=0;i<as.length;i++) { char[] ac=new char[(int) (rand.nextFloat()*1000)]; for(int j=0;j<ac.length;j++) ac[j]=(char) (rand.nextFloat()*Character.MAX_CODE_POINT); as[i]=new String(ac); } ByteArrayOutputStream os=new ByteArrayOutputStream(); for(String v : as) { // System.out.println(v.length()); s.encode(v, os, null); } InputStream is=new ByteArrayInputStream(os.toByteArray()); for(String v : as) assertEquals("\""+v+"\"", v, s.decode(is, null)); } public void testStringBB() { StringSerializer<Object> s=new StringSerializer<Object>(); Random rand=new Random(); String[] as=new String[(int) (rand.nextFloat()*1000)]; for(int i=0;i<as.length;i++) { char[] ac=new char[(int) (rand.nextFloat()*1000)]; for(int j=0;j<ac.length;j++) ac[j]=(char) (rand.nextFloat()*Character.MAX_CODE_POINT); as[i]=new String(ac); } ByteBuffer bb = ByteBuffer.allocate(10+4*1000*1000); for(String v : as) { // System.out.println(v.length()); s.encode(v, bb, null); } bb.flip(); for(String v : as) assertEquals("\""+v+"\"", v, s.decode(bb, null)); } public void testStringAR() { StringSerializer<Object> s=new StringSerializer<Object>(); Random rand=new Random(); String[] as=new String[(int) (rand.nextFloat()*1000)]; for(int i=0;i<as.length;i++) { char[] ac=new char[(int) (rand.nextFloat()*1000)]; for(int j=0;j<ac.length;j++) ac[j]=(char) (rand.nextFloat()*Character.MAX_CODE_POINT); as[i]=new String(ac); } byte[] ba = new byte[10+4*1000*1000]; long pos = 0; for(String v : as) { // System.out.println(v.length()); pos += s.encode(v, ba, pos, ba.length-pos, null); } long len = pos; pos=0; for(String val : as) { String v=s.decode(ba, pos, len-pos, null); pos += s.length(val,null); assertEquals("\""+val+"\"", val, v); } } }