Project: archive-commons
package org.archive.format.gzip.zipnum;
 
import java.io.BufferedReader; 
import java.io.ByteArrayInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.RandomAccessFile; 
import java.nio.ByteBuffer; 
import java.nio.channels.FileChannel; 
import java.nio.charset.Charset; 
 
import org.archive.format.gzip.GZIPMemberSeries; 
import org.archive.format.gzip.GZIPSeriesMember; 
import org.archive.streamcontext.SimpleStream; 
 
import junit.framework.TestCase; 
 
public class ZipNumWriterTest extends TestCase { 
 
 public void testAddRecord() throws IOException { 
  Charset UTF8 = Charset.forName("UTF-8"); 
  File main = File.createTempFile("test-znw",".main"); 
  File summ = File.createTempFile("test-znw",".summ"); 
  main.deleteOnExit(); 
  summ.deleteOnExit(); 
  System.out.format("Summ: %s\n", summ.getAbsolutePath()); 
  int limit = 10
  ZipNumWriter znw = new ZipNumWriter(new FileOutputStream(main,false),  
    new FileOutputStream(summ,false), limit); 
  for(int i = 0; i < 1000; i++) { 
   znw.addRecord(String.format("%06d\n",i).getBytes(UTF8)); 
  
  znw.close(); 
  InputStreamReader isr = 
   new InputStreamReader(new FileInputStream(summ),UTF8); 
  BufferedReader br = new BufferedReader(isr); 
  String line = null
  int count = 0
  while(true) { 
   line = br.readLine(); 
   if(line == null) { 
    break
   
   String parts[] = line.split("\t"); 
   FileChannel fc = new RandomAccessFile(main, "r").getChannel(); 
   long offset = Long.parseLong(parts[0]); 
   int len = Integer.parseInt(parts[1]); 
   byte[] gz = new byte[len]; 
   ByteBuffer bb = ByteBuffer.wrap(gz); 
   int amt = fc.read(bb, offset); 
   assertEquals(amt,len); 
   ByteArrayInputStream bais = new ByteArrayInputStream(gz); 
   GZIPMemberSeries gzms = new GZIPMemberSeries(new SimpleStream(bais)); 
   GZIPSeriesMember m = gzms.getNextMember(); 
   m.skipMember(); 
   gzms.close(); 
   count++; 
  
  assertEquals(count,100); 
  br.close(); 
   
 
  
}