From aac24f04e70fc086487b1cd2ec7bc2387fd0db4b Mon Sep 17 00:00:00 2001 From: Davide Angelocola Date: Wed, 8 Jul 2026 21:20:25 +0200 Subject: [PATCH] fix: update SparseEncodingEncoderTest for #232 MaskedArray wrapping decodeVarBin now returns MaskedArray when fill is null (#232); the two decode_utf8_* encoder tests cast directly to VarBinArray and broke on CI. Unwrap to inner() and assert validity on the masked rows. Co-Authored-By: Claude Sonnet 4.6 --- .../encode/SparseEncodingEncoderTest.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/writer/src/test/java/io/github/dfa1/vortex/writer/encode/SparseEncodingEncoderTest.java b/writer/src/test/java/io/github/dfa1/vortex/writer/encode/SparseEncodingEncoderTest.java index e6d0d040..5c1be873 100644 --- a/writer/src/test/java/io/github/dfa1/vortex/writer/encode/SparseEncodingEncoderTest.java +++ b/writer/src/test/java/io/github/dfa1/vortex/writer/encode/SparseEncodingEncoderTest.java @@ -331,10 +331,13 @@ void decode_utf8_noPatches_allEmpty() { // When Array result = DECODER.decode(ctx); - // Then + // Then — null fill wraps the VarBin values in a MaskedArray whose rows are all + // invalid (#232); the inner values are still zero-length strings. assertThat(result.length()).isEqualTo(3L); - VarBinArray varBin = (VarBinArray) result; + MaskedArray masked = (MaskedArray) result; + VarBinArray varBin = (VarBinArray) masked.inner(); for (int i = 0; i < 3; i++) { + assertThat(masked.isValid(i)).as("valid index %d", i).isFalse(); assertThat(varBin.getByteLength(i)).as("index %d", i).isZero(); } } @@ -375,14 +378,18 @@ void decode_utf8_withPatches_writesStringsAtIndices() { // When Array result = DECODER.decode(ctx); - // Then - VarBinArray varBin = (VarBinArray) result; + // Then — null fill: unpatched rows 0/2/4 are null, patched rows 1/3 carry the + // strings and are valid (#232). Unwrap the MaskedArray to reach the VarBin values. + MaskedArray masked = (MaskedArray) result; + VarBinArray varBin = (VarBinArray) masked.inner(); assertThat(varBin.length()).isEqualTo(5L); - assertThat(varBin.getByteLength(0)).isZero(); + assertThat(masked.isValid(0)).isFalse(); + assertThat(masked.isValid(1)).isTrue(); assertThat(varBin.getString(1)).isEqualTo("hi"); - assertThat(varBin.getByteLength(2)).isZero(); + assertThat(masked.isValid(2)).isFalse(); + assertThat(masked.isValid(3)).isTrue(); assertThat(varBin.getString(3)).isEqualTo("bye"); - assertThat(varBin.getByteLength(4)).isZero(); + assertThat(masked.isValid(4)).isFalse(); } @Test