diff --git a/src/main/java/me/lemire/integercompression/VariableByte.java b/src/main/java/me/lemire/integercompression/VariableByte.java index c9b04d0..9cc9088 100644 --- a/src/main/java/me/lemire/integercompression/VariableByte.java +++ b/src/main/java/me/lemire/integercompression/VariableByte.java @@ -173,7 +173,7 @@ public void uncompress(byte[] in, IntWrapper inpos, int inlength, p += 5; } outpos.set(tmpoutpos); - inpos.add(p); + inpos.set(p); } @Override diff --git a/src/main/java/me/lemire/integercompression/differential/IntegratedVariableByte.java b/src/main/java/me/lemire/integercompression/differential/IntegratedVariableByte.java index a577031..313792b 100644 --- a/src/main/java/me/lemire/integercompression/differential/IntegratedVariableByte.java +++ b/src/main/java/me/lemire/integercompression/differential/IntegratedVariableByte.java @@ -174,7 +174,7 @@ public void uncompress(byte[] in, IntWrapper inpos, int inlength, p+= 5; } outpos.set(tmpoutpos); - inpos.add(p); + inpos.set(p); } @Override diff --git a/src/test/java/me/lemire/integercompression/ByteBasicTest.java b/src/test/java/me/lemire/integercompression/ByteBasicTest.java index 2b2d4f1..7b7799d 100644 --- a/src/test/java/me/lemire/integercompression/ByteBasicTest.java +++ b/src/test/java/me/lemire/integercompression/ByteBasicTest.java @@ -51,9 +51,26 @@ public void saulTest() { System.out.println("Problem with "+C); } assertArrayEquals(a, c); + assertEquals(C.toString(), x + len, bOffset.get()); + assertEquals(C.toString(), a.length, cOffset.get()); } } } + @Test + public void emptyInputPreservesOffsets() { + for (ByteIntegerCODEC codec : codecs) { + IntWrapper inpos = new IntWrapper(5); + IntWrapper outpos = new IntWrapper(2); + int[] output = { 10, 20, 30 }; + + codec.uncompress(new byte[5], inpos, 0, output, outpos); + + assertEquals(codec.toString(), 5, inpos.get()); + assertEquals(codec.toString(), 2, outpos.get()); + assertArrayEquals(new int[] { 10, 20, 30 }, output); + } + } + /** * */