package org.rdfhdt.hdt.util.crc; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Random; import org.junit.Before; import org.junit.Test; public class CRCStreamTest { @Before public void setUp() throws Exception { } public boolean testCRC(CRC generator, CRC checker, int size) throws Exception { ByteArrayOutputStream byteStrOut = new ByteArrayOutputStream(size+10); CRCOutputStream crcStrmOut = new CRCOutputStream(byteStrOut, generator); Random r = new Random(); for(int i=0;i<size;i++) { crcStrmOut.write(r.nextInt()&0xFF); } crcStrmOut.writeCRC(); crcStrmOut.close(); // System.out.println("CRC: "+crcStrmOut.crc); ByteArrayInputStream byteStrIn = new ByteArrayInputStream(byteStrOut.toByteArray()); CRCInputStream crcStrmIn = new CRCInputStream(byteStrIn, checker); for(int i=0;i<size;i++) { crcStrmIn.read(); } boolean ok = crcStrmIn.readCRCAndCheck(); crcStrmIn.close(); return ok; } @Test public void testCRC8() throws Exception { assertTrue(testCRC(new CRC8(), new CRC8(), 1000*1000)); } @Test public void testCRC16() throws Exception { assertTrue(testCRC(new CRC16(), new CRC16(), 1000*1000)); } @Test public void testCRC32() throws Exception { assertTrue(testCRC(new CRC32(), new CRC32(), 1000*1000)); } }