package me.lemire.integercompression; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; import me.lemire.integercompression.differential.IntegratedBinaryPacking; import me.lemire.integercompression.differential.IntegratedIntCompressor; import me.lemire.integercompression.differential.IntegratedVariableByte; import me.lemire.integercompression.differential.SkippableIntegratedComposition; /** * Testing IntCompressor objects. */ public class IntCompressorTest { IntegratedIntCompressor[] iic = { new IntegratedIntCompressor(new IntegratedVariableByte()), new IntegratedIntCompressor( new SkippableIntegratedComposition( new IntegratedBinaryPacking(), new IntegratedVariableByte())) }; IntCompressor[] ic = { new IntCompressor(new VariableByte()), new IntCompressor(new SkippableComposition(new BinaryPacking(), new VariableByte())) }; /** * */ @Test public void basicTest() { for (int N = 1; N <= 10000; N *= 10) { int[] orig = new int[N]; for (int k = 0; k < N; k++) orig[k] = 3 * k + 5; for (IntCompressor i : ic) { int[] comp = i.compress(orig); int[] back = i.uncompress(comp); Assert.assertArrayEquals(back, orig); } } } /** * */ @Test public void superSimpleExample() { IntegratedIntCompressor iic = new IntegratedIntCompressor(); int[] data = new int[2342351]; for(int k = 0; k < data.length; ++k) data[k] = k; System.out.println("Compressing "+data.length+" integers using friendly interface"); int[] compressed = iic.compress(data); int[] recov = iic.uncompress(compressed); System.out.println("compressed from "+data.length*4/1024+"KB to "+compressed.length*4/1024+"KB"); if(!Arrays.equals(recov,data)) throw new RuntimeException("bug"); } /** * */ @Test public void basicIntegratedTest() { for (int N = 1; N <= 10000; N *= 10) { int[] orig = new int[N]; for (int k = 0; k < N; k++) orig[k] = 3 * k + 5; for (IntegratedIntCompressor i : iic) { int[] comp = i.compress(orig); int[] back = i.uncompress(comp); Assert.assertArrayEquals(back, orig); } } } }