mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
(gamma) Correctly decode zero-length sequences
This commit is contained in:
parent
23759a7243
commit
fff2ce5721
@ -76,10 +76,6 @@ public class BitReader {
|
|||||||
|
|
||||||
/** Read bits until a 1 is encountered */
|
/** Read bits until a 1 is encountered */
|
||||||
public int takeWhileZero() {
|
public int takeWhileZero() {
|
||||||
if (bitPosition <= 0) {
|
|
||||||
readNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
@ -118,7 +114,7 @@ public class BitReader {
|
|||||||
bitPosition = 64;
|
bitPosition = 64;
|
||||||
}
|
}
|
||||||
else if (remainingCapacity >= 4) {
|
else if (remainingCapacity >= 4) {
|
||||||
currentValue = underlying.getInt() & 0xFFFFFFFFL;
|
currentValue = underlying.getInt() & 0xFFFF_FFFFL;
|
||||||
bitPosition = 32;
|
bitPosition = 32;
|
||||||
}
|
}
|
||||||
else if (remainingCapacity >= 2) {
|
else if (remainingCapacity >= 2) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package nu.marginalia.sequence;
|
package nu.marginalia.sequence;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.ints.IntList;
|
||||||
import nu.marginalia.sequence.io.BitReader;
|
import nu.marginalia.sequence.io.BitReader;
|
||||||
import nu.marginalia.sequence.io.BitWriter;
|
import nu.marginalia.sequence.io.BitWriter;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -10,6 +11,15 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||||||
|
|
||||||
class BitReaderTest {
|
class BitReaderTest {
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void emptySequence() {
|
||||||
|
var writer = new BitWriter(ByteBuffer.allocate(1024));
|
||||||
|
var buffer = writer.finish();
|
||||||
|
|
||||||
|
assertEquals(IntList.of(), new GammaCodedSequence(buffer).values());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getBit() {
|
void getBit() {
|
||||||
var writer = new BitWriter(ByteBuffer.allocate(1024));
|
var writer = new BitWriter(ByteBuffer.allocate(1024));
|
||||||
|
Loading…
Reference in New Issue
Block a user