package jane.test; import java.io.FileInputStream; import java.security.MessageDigest; import java.util.Arrays; import jane.tool.LZCompressor; public final class TestCompressor { public static void main(String[] args) throws Exception { long srcpos, srclen; byte[] src; try(FileInputStream fis = new FileInputStream(args[0])) { srcpos = (args.length > 1 ? Long.parseLong(args[1]) : 0); srclen = (args.length > 2 ? Long.parseLong(args[2]) : fis.getChannel().size()); src = new byte[(int)srclen]; if(fis.skip(srcpos) != srcpos) { System.out.println("ERROR: skip file failed"); fis.close(); return; } fis.read(src); } byte[] dst = new byte[LZCompressor.maxCompressedSize((int)srclen)]; MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] srcmd5 = md5.digest(src); LZCompressor lzc = new LZCompressor(); long tc = System.currentTimeMillis(); int dstlen = lzc.compress(src, 0, src.length, dst, 0); long td = System.currentTimeMillis(); tc = td - tc; lzc.decompress(dst, 0, src, 0, (int)srclen); td = System.currentTimeMillis() - td; md5.reset(); byte[] dstmd5 = md5.digest(src); if(!Arrays.equals(srcmd5, dstmd5)) System.out.println("ERROR: unmatched compressed/decompressed data!"); System.out.println(args[0] + ": " + dstlen + ' ' + tc + '/' + td); } }