/**
 * Copyright 2011 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.bitcoinj.core;

import junit.framework.TestCase;

public class VarIntTest extends TestCase {
    public void testBytes() throws Exception {
        VarInt a = new VarInt(10); // with widening conversion
        assertEquals(1, a.getSizeInBytes());
        assertEquals(1, a.encode().length);
        assertEquals(10, new VarInt(a.encode(), 0).value);
    }

    public void testShorts() throws Exception {
        VarInt a = new VarInt(64000); // with widening conversion
        assertEquals(3, a.getSizeInBytes());
        assertEquals(3, a.encode().length);
        assertEquals(64000, new VarInt(a.encode(), 0).value);
    }

    public void testShortFFFF() throws Exception {
        VarInt a = new VarInt(0xFFFFL);
        assertEquals(3, a.getSizeInBytes());
        assertEquals(3, a.encode().length);
        assertEquals(0xFFFFL, new VarInt(a.encode(), 0).value);
    }

    public void testInts() throws Exception {
        VarInt a = new VarInt(0xAABBCCDDL);
        assertEquals(5, a.getSizeInBytes());
        assertEquals(5, a.encode().length);
        byte[] bytes = a.encode();
        assertEquals(0xAABBCCDDL, 0xFFFFFFFFL & new VarInt(bytes, 0).value);
    }

    public void testIntFFFFFFFF() throws Exception {
        VarInt a = new VarInt(0xFFFFFFFFL);
        assertEquals(5, a.getSizeInBytes());
        assertEquals(5, a.encode().length);
        byte[] bytes = a.encode();
        assertEquals(0xFFFFFFFFL, 0xFFFFFFFFL & new VarInt(bytes, 0).value);
    }

    public void testLong() throws Exception {
        VarInt a = new VarInt(0xCAFEBABEDEADBEEFL);
        assertEquals(9, a.getSizeInBytes());
        assertEquals(9, a.encode().length);
        byte[] bytes = a.encode();
        assertEquals(0xCAFEBABEDEADBEEFL, new VarInt(bytes, 0).value);
    }

    public void testSizeOfNegativeInt() throws Exception {
        // shouldn't normally be passed, but at least stay consistent (bug regression test)
        assertEquals(VarInt.sizeOf(-1), new VarInt(-1).encode().length);
    }
}

@@ -651,16 +651,40 @@
 tCase;%0A%0A
+import org.junit.Test;%0A%0A
 public c
@@ -717,16 +717,27 @@
 stCase %7B
+%0A%0A    @Test
 %0A    pub
@@ -986,32 +986,42 @@
 .value);%0A    %7D%0A%0A
+    @Test%0A
     public void 
@@ -1268,32 +1268,42 @@
 .value);%0A    %7D%0A%0A
+    @Test%0A
     public void 
@@ -1529,32 +1529,42 @@
 .value);%0A    %7D%0A%0A
+    @Test%0A
     public void 
@@ -1837,32 +1837,42 @@
 .value);%0A    %7D%0A%0A
+    @Test%0A
     public void 
@@ -2152,32 +2152,42 @@
 .value);%0A    %7D%0A%0A
+    @Test%0A
     public void 
@@ -2466,24 +2466,34 @@
 ue);%0A    %7D%0A%0A
+    @Test%0A
     public v

Fix missing @Test annotations.