From b805f6daa8bbd590761056509827c0097f62e274 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Tue, 25 Jun 2024 22:17:54 +0200 Subject: [PATCH] (gamma) Fix readCount() behavior in EGC --- .../java/nu/marginalia/sequence/EliasGammaCodec.java | 8 ++++---- .../test/nu/marginalia/sequence/EliasGammaCodecTest.java | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/libraries/coded-sequence/java/nu/marginalia/sequence/EliasGammaCodec.java b/code/libraries/coded-sequence/java/nu/marginalia/sequence/EliasGammaCodec.java index 87b2abd5..3f33e8c8 100644 --- a/code/libraries/coded-sequence/java/nu/marginalia/sequence/EliasGammaCodec.java +++ b/code/libraries/coded-sequence/java/nu/marginalia/sequence/EliasGammaCodec.java @@ -37,12 +37,12 @@ public class EliasGammaCodec implements IntIterator { public static int readCount(ByteBuffer buffer) { var reader = new BitReader(buffer); - if (reader.getCurrentValue() > 0) { - int bits = reader.takeWhileZero(); - return reader.get(bits); + int bits = reader.takeWhileZero(); + if (!reader.hasMore()) { + return 0; } else { - return 0; + return reader.get(bits); } } diff --git a/code/libraries/coded-sequence/test/nu/marginalia/sequence/EliasGammaCodecTest.java b/code/libraries/coded-sequence/test/nu/marginalia/sequence/EliasGammaCodecTest.java index 914c8329..77159460 100644 --- a/code/libraries/coded-sequence/test/nu/marginalia/sequence/EliasGammaCodecTest.java +++ b/code/libraries/coded-sequence/test/nu/marginalia/sequence/EliasGammaCodecTest.java @@ -30,6 +30,13 @@ class EliasGammaCodecTest { assertEquals(expected, decoded); } + @Test + public void valueCount() { + var ret = EliasGammaCodec.encode(work, new int[] { 1, 3, 5, 16, 32, 64 }); + var count = EliasGammaCodec.readCount(ret); + assertEquals(6, count); + } + @Test public void testCodec2() { var ret = EliasGammaCodec.encode(work, new int[] { 1, 256 });