package org.infinispan.commons.io;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.junit.Test;
/**
* @author gustavonalle
* @since 8.0
*/
public class SignedNumericTest {
@Test
public void testEncodeDecode() throws Exception {
encodeDecode(-Integer.MAX_VALUE, 5);
encodeDecode(-2500000, 4);
encodeDecode(-15000, 3);
encodeDecode(-100, 2);
encodeDecode(-1, 1);
encodeDecode(0, 1);
encodeDecode(1, 1);
encodeDecode(60, 1);
encodeDecode(128, 2);
encodeDecode(1300, 2);
encodeDecode(15000, 3);
encodeDecode(2500000, 4);
encodeDecode(Integer.MAX_VALUE - 1, 5);
}
private void encodeDecode(int value, int expectedSize) throws IOException {
try (ByteArrayOutputStream os = new ByteArrayOutputStream(5)) {
SignedNumeric.writeSignedInt(os, value);
byte[] bytes = os.toByteArray();
try (ByteArrayInputStream is = new ByteArrayInputStream(bytes)) {
int read = SignedNumeric.readSignedInt(is);
assertEquals(read, value);
}
assertEquals(bytes.length, expectedSize);
}
}
}