package cubicchunks;

import static org.junit.Assert.assertEquals;

import cubicchunks.util.PacketUtils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import org.junit.Test;

public class TestPacketUtil {

    @Test
    public void testSignedVarInts() {
        testRange(-128, 128, 0);
        testRange(-128, 128, 6);
        testRange(-128, 128, 12);
        testRange(-128, 128, 18);
        testRange(-128, 128, 24);
        testRange(Integer.MIN_VALUE, Integer.MIN_VALUE + 128, 0);
        testRange(Integer.MAX_VALUE - 128, Integer.MAX_VALUE, 0);
    }

    private void testRange(int min, int max, int bitshift) {
        // 5* because max 5 bytes per int
        ByteBuf buf = Unpooled.wrappedBuffer(new byte[5 * (max - min + 1)]);
        buf.writerIndex(0);
        for (long i = min; i <= max; i++) {
            int val = (int) i << bitshift;
            PacketUtils.writeSignedVarInt(buf, val);
        }
        buf.readerIndex(0);
        for (long i = min; i <= max; i++) {
            int val = (int) i << bitshift;
            assertEquals(val, PacketUtils.readSignedVarInt(buf));
        }
    }
}

@@ -1,8 +1,1225 @@
+/*%0A *  This file is part of Cubic Chunks Mod, licensed under the MIT License (MIT).%0A *%0A *  Copyright (c) 2015 contributors%0A *%0A *  Permission is hereby granted, free of charge, to any person obtaining a copy%0A *  of this software and associated documentation files (the %22Software%22), to deal%0A *  in the Software without restriction, including without limitation the rights%0A *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell%0A *  copies of the Software, and to permit persons to whom the Software is%0A *  furnished to do so, subject to the following conditions:%0A *%0A *  The above copyright notice and this permission notice shall be included in%0A *  all copies or substantial portions of the Software.%0A *%0A *  THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR%0A *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,%0A *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN%0A *  THE SOFTWARE.%0A */%0A
 package 

Add another missing license header