Package me.lemire.integercompression

Source Code of me.lemire.integercompression.BoundaryTest

package me.lemire.integercompression;

import java.util.Arrays;

import me.lemire.integercompression.differential.IntegratedBinaryPacking;
import me.lemire.integercompression.differential.IntegratedComposition;
import me.lemire.integercompression.differential.IntegratedVariableByte;

import org.junit.Test;

import static org.junit.Assert.*;

/**
* @author lemire
*
*/
@SuppressWarnings({ "static-method" })
public class BoundaryTest {
    private static void compressAndUncompress(int length, IntegerCODEC c) {
        // Initialize array.
        int[] source = new int[length];
        for (int i = 0; i < source.length; ++i) {
            source[i] = i;
        }

        // Compress an array.
        int[] compressed = new int[length];
        IntWrapper c_inpos = new IntWrapper(0);
        IntWrapper c_outpos = new IntWrapper(0);
        c.compress(source, c_inpos, source.length, compressed, c_outpos);
        assertTrue(c_outpos.get() <= length);

        // Uncompress an array.
        int[] uncompressed = new int[length];
        IntWrapper u_inpos = new IntWrapper(0);
        IntWrapper u_outpos = new IntWrapper(0);
        c.uncompress(compressed, u_inpos, c_outpos.get(), uncompressed,
                u_outpos);

        // Compare between uncompressed and original arrays.
        int[] target = Arrays.copyOf(uncompressed, u_outpos.get());
        if (!Arrays.equals(source, target)) {
            System.out.println("problem with length = " + length + " and " + c);
            System.out.println(Arrays.toString(source));
            System.out.println(Arrays.toString(target));
        }
        assertArrayEquals(source, target);
    }
    private static void around32(IntegerCODEC c) {
        compressAndUncompress(31, c);
        compressAndUncompress(32, c);
        compressAndUncompress(33, c);
    }

   
    private static void around128(IntegerCODEC c) {
        compressAndUncompress(127, c);
        compressAndUncompress(128, c);
        compressAndUncompress(129, c);
    }

    private static void around256(IntegerCODEC c) {
        compressAndUncompress(255, c);
        compressAndUncompress(256, c);
        compressAndUncompress(257, c);
    }

    private static void testBoundary(IntegerCODEC c) {
        around32(c);
        around128(c);
        around256(c);
    }


    /**
     */
    @Test
    public void testIntegratedComposition() {
        IntegratedComposition c = new IntegratedComposition(
                new IntegratedBinaryPacking(), new IntegratedVariableByte());
        testBoundary(c);
    }

    /**
     */
    @Test
    public void testComposition()  {
        Composition c = new Composition(new BinaryPacking(), new VariableByte());
        testBoundary(c);
    }
}
TOP

Related Classes of me.lemire.integercompression.BoundaryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.