From b38aa7a48a05901e9d68b77d99ba90b82a1c1bb6 Mon Sep 17 00:00:00 2001 From: Davide Angelocola Date: Wed, 5 Aug 2026 07:54:13 +0200 Subject: [PATCH 1/2] docs: fix MemorySize drift in reference.md, bump examples to 0.13.0 WriteOptions#globalDictMaxRetainedBytes was still documented as long (default "2 GB") after f89a3d37 changed it to MemorySize (default MemorySize.ofGiB(2)). Also bump Maven coordinate examples in README, tutorial, and compatibility docs from 0.12.2 to the current 0.13.0 release. Co-Authored-By: Claude Sonnet 5 --- README.md | 4 ++-- docs/compatibility.md | 4 ++-- docs/reference.md | 4 ++-- docs/tutorial.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 086a3728..c3d207de 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ line-by-line diff is zero. io.github.dfa1.vortex vortex-reader - 0.12.2 + 0.13.0 ``` @@ -102,7 +102,7 @@ try (VortexReader vf = VortexReader.open(Path.of("data/example.vortex")); io.github.dfa1.vortex vortex-writer - 0.12.2 + 0.13.0 ``` diff --git a/docs/compatibility.md b/docs/compatibility.md index 1df2910f..d4a0c31c 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -12,14 +12,14 @@ A consumer that only needs to read Vortex files can depend on a strict subset: io.github.dfa1.vortex vortex-reader - 0.12.2 + 0.13.0 io.github.dfa1.vortex vortex-inspector - 0.12.2 + 0.13.0 ``` diff --git a/docs/reference.md b/docs/reference.md index 8898f686..3d154aa9 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -130,11 +130,11 @@ Accepted array types per column `DType`: ### `WriteOptions` (`io.github.dfa1.vortex.writer.WriteOptions`) -Record: `(int chunkSize, boolean enableZoneMaps, double compressionRatioThreshold, int allowedCascading, boolean globalDict, boolean enableZstd, long globalDictMaxRetainedBytes, Map editions)`. +Record: `(int chunkSize, boolean enableZoneMaps, double compressionRatioThreshold, int allowedCascading, boolean globalDict, boolean enableZstd, MemorySize globalDictMaxRetainedBytes, Map editions)`. | Factory | Defaults | |---------------------------------|---------------------------------------------------------------------------------------------------| -| `WriteOptions.defaults()` | `chunkSize=65_536`, `enableZoneMaps=true`, `compressionRatioThreshold=0.90`, `allowedCascading=0`, `globalDict=true`, `enableZstd=false`, `globalDictMaxRetainedBytes=2 GB`, `editions={CORE: Editions.CORE_2026_07_0}` | +| `WriteOptions.defaults()` | `chunkSize=65_536`, `enableZoneMaps=true`, `compressionRatioThreshold=0.90`, `allowedCascading=0`, `globalDict=true`, `enableZstd=false`, `globalDictMaxRetainedBytes=MemorySize.ofGiB(2)`, `editions={CORE: Editions.CORE_2026_07_0}` | | `WriteOptions.cascading(depth)` | Same defaults, `allowedCascading=depth` | | Method | Notes | diff --git a/docs/tutorial.md b/docs/tutorial.md index 3260b918..30a5a8e3 100644 --- a/docs/tutorial.md +++ b/docs/tutorial.md @@ -26,7 +26,7 @@ Add the dependency to `pom.xml` (inside ``): io.github.dfa1.vortex vortex-reader - 0.12.2 + 0.13.0 ``` From 5ce57fdfe4e10987bf63fd6e3a96787f51cf69f4 Mon Sep 17 00:00:00 2001 From: Davide Angelocola Date: Wed, 5 Aug 2026 08:03:16 +0200 Subject: [PATCH 2/2] test: sonar S5838/S5853 assertion cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit S5838 ("Use isZero() instead."): replace .isEqualTo(0) with .isZero() on the 9 sites where the assertion subject is statically numeric. The other 13 flagged sites bind assertThat(Number) (DictFilterTest, FusedFilterSumTest, ComputeFilteredAggregateTest), which has no isZero() — Number isn't Comparable — so they're left as Sonar false positives; casting or unboxing there would either drop the boxed-type check these tests exist to pin (Long vs Double zero) or turn an assertion failure into a ClassCastException. S5853 ("Join these multiple assertions subject to one assertion chain."): merge consecutive assertThat(sameSubject) statements into one fluent chain across cli/core/fbs-gen/inspector/integration/ proto-gen/reader tests. No assertion coverage removed. Co-Authored-By: Claude Sonnet 5 --- .../java/io/github/dfa1/vortex/cli/CliIT.java | 5 +- .../vortex/cli/tui/InspectorRenderTest.java | 14 +++-- .../vortex/cli/tui/VortexGridTuiTest.java | 9 +-- .../cli/tui/VortexInspectorTuiTest.java | 14 +++-- .../vortex/core/model/ColumnNameTest.java | Bin 4095 -> 4067 bytes .../vortex/core/proto/ProtoRuntimeTest.java | 3 +- .../dfa1/vortex/fbsgen/CodeGenTest.java | 55 ++++++++++-------- .../fsst/LossyPerfectHashTableTest.java | 4 +- .../github/dfa1/vortex/fsst/MatcherTest.java | 4 +- .../dfa1/vortex/fsst/ShortCodeTableTest.java | 8 +-- .../vortex/inspect/VortexInspectorTest.java | 6 +- .../FileSizeComparisonIntegrationTest.java | 9 ++- ...OhlcEncodingInspectionIntegrationTest.java | 3 +- .../VortexInspectorIntegrationTest.java | 13 +++-- .../dfa1/vortex/protogen/CodeGenTest.java | 13 +++-- .../reader/array/ArrayMaterializeTest.java | 4 +- .../vortex/reader/compute/PredicateTest.java | 6 +- .../decode/BoolEncodingDecoderTest.java | 3 +- .../vortex/writer/ColumnZoneStatsTest.java | 2 +- 19 files changed, 90 insertions(+), 85 deletions(-) diff --git a/cli/src/test/java/io/github/dfa1/vortex/cli/CliIT.java b/cli/src/test/java/io/github/dfa1/vortex/cli/CliIT.java index 4cafe0ed..8ed9975c 100644 --- a/cli/src/test/java/io/github/dfa1/vortex/cli/CliIT.java +++ b/cli/src/test/java/io/github/dfa1/vortex/cli/CliIT.java @@ -239,8 +239,9 @@ void importRejectsMultiCharacterDelimiter(@TempDir Path tmp) throws Exception { () -> ImportCommand.run(new String[]{"import", "--delimiter", "::", csvIn.toString()})); // Then - assertThat(stderr).contains("--delimiter must be exactly one character"); - assertThat(stderr).contains("usage: import [--delimiter ]"); + assertThat(stderr) + .contains("--delimiter must be exactly one character") + .contains("usage: import [--delimiter ]"); assertThat(tmp.resolve("data.vortex")).doesNotExist(); } } diff --git a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/InspectorRenderTest.java b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/InspectorRenderTest.java index 9e16aa50..b7c92069 100644 --- a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/InspectorRenderTest.java +++ b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/InspectorRenderTest.java @@ -248,9 +248,10 @@ void rendersFullRowWithAsciiGutter() { String row = InspectorRender.formatHexRow(data, 0); // Then — offset, hex columns, ASCII gutter - assertThat(row).startsWith("00000000 "); - assertThat(row).contains("41 42 43"); // A B C - assertThat(row).contains("|ABCDEFGHIJKLMNOP|"); + assertThat(row) + .startsWith("00000000 ") + .contains("41 42 43") // A B C + .contains("|ABCDEFGHIJKLMNOP|"); } @Test @@ -262,9 +263,10 @@ void padsShortTrailingRowAndDotsNonPrintable() { String row = InspectorRender.formatHexRow(data, 0); // Then — non-printable shows as '.', missing columns are padded - assertThat(row).startsWith("00000000 "); - assertThat(row).contains("78 00 79"); - assertThat(row).contains("|x.y"); + assertThat(row) + .startsWith("00000000 ") + .contains("78 00 79") + .contains("|x.y"); } } diff --git a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexGridTuiTest.java b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexGridTuiTest.java index 27193a8e..7f15501e 100644 --- a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexGridTuiTest.java +++ b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexGridTuiTest.java @@ -50,10 +50,11 @@ void navigatesAndRendersGrid() throws Exception { // Then — title, column header, and at least one decoded cell rendered String out = term.output(); - assertThat(out).contains("Vortex View"); - assertThat(out).contains("grid.vortex"); - assertThat(out).contains("q quit"); - assertThat(out).contains("a").contains("b").contains("c"); + assertThat(out) + .contains("Vortex View") + .contains("grid.vortex") + .contains("q quit") + .contains("a").contains("b").contains("c"); } @Test diff --git a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexInspectorTuiTest.java b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexInspectorTuiTest.java index 167778c2..471a89c7 100644 --- a/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexInspectorTuiTest.java +++ b/cli/src/test/java/io/github/dfa1/vortex/cli/tui/VortexInspectorTuiTest.java @@ -50,9 +50,10 @@ void navigatesAndRendersInspector() throws Exception { // Then — header chrome and tree content rendered String out = term.output(); - assertThat(out).contains("vortex-inspect"); - assertThat(out).contains("struct"); - assertThat(out).contains("quit"); + assertThat(out) + .contains("vortex-inspect") + .contains("struct") + .contains("quit"); } @Test @@ -88,9 +89,10 @@ void deepExpand_rendersDictStatsAndDataPanes_synchronously() throws Exception { // Then — the dictionary, per-chunk stats, and data preview panes all rendered String out = term.output(); - assertThat(out).contains("Dictionary"); - assertThat(out).contains("Per-chunk stats"); - assertThat(out).contains("Data (column"); + assertThat(out) + .contains("Dictionary") + .contains("Per-chunk stats") + .contains("Data (column"); } @Test diff --git a/core/src/test/java/io/github/dfa1/vortex/core/model/ColumnNameTest.java b/core/src/test/java/io/github/dfa1/vortex/core/model/ColumnNameTest.java index 52a8675714422305a55686f669fa63816c078e9e..0577b9c427f0ddae9494305979ab57704871efab 100644 GIT binary patch delta 12 Tcmew_|5$!QJ;&zR94YJoCq)Gr delta 16 XcmaDX|6hJXJ;&rA4%y8O9LekeJfH># diff --git a/core/src/test/java/io/github/dfa1/vortex/core/proto/ProtoRuntimeTest.java b/core/src/test/java/io/github/dfa1/vortex/core/proto/ProtoRuntimeTest.java index 759d032b..e50f3be5 100644 --- a/core/src/test/java/io/github/dfa1/vortex/core/proto/ProtoRuntimeTest.java +++ b/core/src/test/java/io/github/dfa1/vortex/core/proto/ProtoRuntimeTest.java @@ -315,8 +315,7 @@ void recordsWithEqualByteArraysAreEqual() { ProtoScalarValue b = ProtoScalarValue.ofBytesValue(new byte[]{1, 2, 3}); // When + Then - assertThat(a).isEqualTo(b); - assertThat(a).hasSameHashCodeAs(b); + assertThat(a).isEqualTo(b).hasSameHashCodeAs(b); } @Test diff --git a/fbs-gen/src/test/java/io/github/dfa1/vortex/fbsgen/CodeGenTest.java b/fbs-gen/src/test/java/io/github/dfa1/vortex/fbsgen/CodeGenTest.java index 0a2fb59f..c465d95b 100644 --- a/fbs-gen/src/test/java/io/github/dfa1/vortex/fbsgen/CodeGenTest.java +++ b/fbs-gen/src/test/java/io/github/dfa1/vortex/fbsgen/CodeGenTest.java @@ -53,15 +53,16 @@ void emitsScalarVectorAndChildAccessorsForTable() throws IOException { String src = generateOne("FbsLayout.java"); // Then — accessors match the flatc read shapes (widened unsigned types). - assertThat(src).contains("extends FbsTable"); - assertThat(src).contains("public int encoding() {"); - assertThat(src).contains("public long rowCount() {"); - assertThat(src).contains("public MemorySegment metadataAsSegment() {"); - assertThat(src).contains("public int childrenLength() {"); - assertThat(src).contains("public FbsLayout children(int j) {"); - assertThat(src).contains("indirect(vectorElements(o) + (long) j * 4)"); - assertThat(src).contains("public long segments(int j) {"); - assertThat(src).contains("readInt(vectorElements(o) + (long) j * 4) & 0xFFFFFFFFL"); + assertThat(src) + .contains("extends FbsTable") + .contains("public int encoding() {") + .contains("public long rowCount() {") + .contains("public MemorySegment metadataAsSegment() {") + .contains("public int childrenLength() {") + .contains("public FbsLayout children(int j) {") + .contains("indirect(vectorElements(o) + (long) j * 4)") + .contains("public long segments(int j) {") + .contains("readInt(vectorElements(o) + (long) j * 4) & 0xFFFFFFFFL"); } @Test @@ -71,12 +72,13 @@ void emitsInlineOffsetsForStruct() throws IOException { String src = generateOne("FbsBuffer.java"); // Then - assertThat(src).contains("extends FbsMemorySegment"); - assertThat(src).contains("8 bytes"); - assertThat(src).contains("public int padding() {\n return readShort(0) & 0xFFFF;"); - assertThat(src).contains("public int alignmentExponent() {\n return readByte(2) & 0xFF;"); - assertThat(src).contains("public int compression() {\n return readByte(3) & 0xFF;"); - assertThat(src).contains("public long length() {\n return readInt(4) & 0xFFFFFFFFL;"); + assertThat(src) + .contains("extends FbsMemorySegment") + .contains("8 bytes") + .contains("public int padding() {\n return readShort(0) & 0xFFFF;") + .contains("public int alignmentExponent() {\n return readByte(2) & 0xFF;") + .contains("public int compression() {\n return readByte(3) & 0xFF;") + .contains("public long length() {\n return readInt(4) & 0xFFFFFFFFL;"); } @Test @@ -85,11 +87,12 @@ void emitsDiscriminatorAndMemberPositionForUnionField() throws IOException { String src = generateOne("FbsDType.java"); // Then — discriminator at vtable slot 4, value (member) projected from slot 6. - assertThat(src).contains("public int typeType() {"); - assertThat(src).contains("fieldOffset(4)"); - assertThat(src).contains("public T type(T obj) {"); - assertThat(src).contains("locate(obj, unionMemberPosition(o))"); - assertThat(src).contains("fieldOffset(6)"); + assertThat(src) + .contains("public int typeType() {") + .contains("fieldOffset(4)") + .contains("public T type(T obj) {") + .contains("locate(obj, unionMemberPosition(o))") + .contains("fieldOffset(6)"); } @Test @@ -98,9 +101,10 @@ void emitsUnionConstantsHolder() throws IOException { String src = generateOne("FbsType.java"); // Then — NONE plus members with explicit discriminators (byte, like flatc). - assertThat(src).contains("public static final byte NONE = 0;"); - assertThat(src).contains("public static final byte FbsNull = (byte) 1;"); - assertThat(src).contains("public static final byte FbsUnion = (byte) 12;"); + assertThat(src) + .contains("public static final byte NONE = 0;") + .contains("public static final byte FbsNull = (byte) 1;") + .contains("public static final byte FbsUnion = (byte) 12;"); } @Test @@ -109,8 +113,9 @@ void emitsEnumConstantsOverUnderlyingType() throws IOException { String src = generateOne("FbsPType.java"); // Then — byte constants, auto-numbered from 0. - assertThat(src).contains("public static final byte U8 = (byte) 0;"); - assertThat(src).contains("public static final byte F64 = (byte) 10;"); + assertThat(src) + .contains("public static final byte U8 = (byte) 0;") + .contains("public static final byte F64 = (byte) 10;"); } private static void generate(Path out) throws IOException { diff --git a/fsst/src/test/java/io/github/dfa1/vortex/fsst/LossyPerfectHashTableTest.java b/fsst/src/test/java/io/github/dfa1/vortex/fsst/LossyPerfectHashTableTest.java index 29eb9f99..a8f3f35f 100644 --- a/fsst/src/test/java/io/github/dfa1/vortex/fsst/LossyPerfectHashTableTest.java +++ b/fsst/src/test/java/io/github/dfa1/vortex/fsst/LossyPerfectHashTableTest.java @@ -21,7 +21,7 @@ void lookup_realThreeByteSymbol_resolvesCode() { // Then — packed as code << 8 | length; a hit is never 0. assertThat(result).isNotZero(); - assertThat(result >>> 8).isEqualTo(0); + assertThat(result >>> 8).isZero(); assertThat(result & 0xFF).isEqualTo(3); } @@ -71,7 +71,7 @@ void lookup_hashCollisionInGainOrder_higherGainWinsSlotLowerGainMisses() { // Then — the higher-gain (first-inserted) symbol wins; the lower-gain one correctly misses // and does not corrupt or masquerade as the winner. assertThat(higher).isNotZero(); - assertThat(higher >>> 8).isEqualTo(0); + assertThat(higher >>> 8).isZero(); assertThat(lower).isZero(); } diff --git a/fsst/src/test/java/io/github/dfa1/vortex/fsst/MatcherTest.java b/fsst/src/test/java/io/github/dfa1/vortex/fsst/MatcherTest.java index bdee9fe5..a7b5e90e 100644 --- a/fsst/src/test/java/io/github/dfa1/vortex/fsst/MatcherTest.java +++ b/fsst/src/test/java/io/github/dfa1/vortex/fsst/MatcherTest.java @@ -27,7 +27,7 @@ void longestMatch_eightByteSymbol_picksHashTableMatch() { int result = sut.longestMatch(wordOf("ABCDEFGH")); // Then — the longest (8-byte) symbol wins. - assertThat(Matcher.codeOf(result)).isEqualTo(0); + assertThat(Matcher.codeOf(result)).isZero(); assertThat(Matcher.lengthOf(result)).isEqualTo(8); } @@ -81,7 +81,7 @@ void longestMatch_unmatchedByte_signalsNoMatch() { int result = sut.longestMatch(wordOf("zzzzzzzz")); // Then - assertThat(Matcher.lengthOf(result)).isEqualTo(0); + assertThat(Matcher.lengthOf(result)).isZero(); assertThat(Matcher.codeOf(result)).isEqualTo(ShortCodeTable.NO_CODE); } diff --git a/fsst/src/test/java/io/github/dfa1/vortex/fsst/ShortCodeTableTest.java b/fsst/src/test/java/io/github/dfa1/vortex/fsst/ShortCodeTableTest.java index 0fdffec9..30e9fea1 100644 --- a/fsst/src/test/java/io/github/dfa1/vortex/fsst/ShortCodeTableTest.java +++ b/fsst/src/test/java/io/github/dfa1/vortex/fsst/ShortCodeTableTest.java @@ -21,7 +21,7 @@ void codeFor_singleByteSymbol_resolvesLengthOne() { int length = sut.lengthFor(word); // Then - assertThat(code).isEqualTo(0); + assertThat(code).isZero(); assertThat(length).isEqualTo(1); } @@ -57,7 +57,7 @@ void codeFor_singleByteFallbackWhenTwoByteDiffers() { int length = sut.lengthFor(word); // Then - assertThat(code).isEqualTo(0); + assertThat(code).isZero(); assertThat(length).isEqualTo(1); } @@ -74,7 +74,7 @@ void codeFor_byteWithNoSymbol_resolvesNoMatch() { // Then — the caller must escape this byte. assertThat(code).isEqualTo(ShortCodeTable.NO_CODE); - assertThat(length).isEqualTo(0); + assertThat(length).isZero(); } @Test @@ -88,7 +88,7 @@ void codeFor_longSymbolsIgnored() { int length = sut.lengthFor(word); // Then - assertThat(length).isEqualTo(0); + assertThat(length).isZero(); } /// Packs the low bytes of `s` LSB-first into a word, matching the reader's little-endian diff --git a/inspector/src/test/java/io/github/dfa1/vortex/inspect/VortexInspectorTest.java b/inspector/src/test/java/io/github/dfa1/vortex/inspect/VortexInspectorTest.java index 5f3526a5..c65b5546 100644 --- a/inspector/src/test/java/io/github/dfa1/vortex/inspect/VortexInspectorTest.java +++ b/inspector/src/test/java/io/github/dfa1/vortex/inspect/VortexInspectorTest.java @@ -82,8 +82,7 @@ void render_nonStruct_inlinesSingleColumnLayout() { String result = VortexInspector.render(sut); // Then - assertThat(result).contains("vortex.flat(100 rows)"); - assertThat(result).doesNotContain("struct ("); + assertThat(result).contains("vortex.flat(100 rows)").doesNotContain("struct ("); } @Test @@ -163,8 +162,7 @@ void render_columnWithoutStats_omitsMinMax() { String result = VortexInspector.render(sut); // Then - assertThat(result).doesNotContain("min="); - assertThat(result).doesNotContain("max="); + assertThat(result).doesNotContain("min=").doesNotContain("max="); } @Test diff --git a/integration/src/test/java/io/github/dfa1/vortex/integration/FileSizeComparisonIntegrationTest.java b/integration/src/test/java/io/github/dfa1/vortex/integration/FileSizeComparisonIntegrationTest.java index 5166aea7..5eefd53a 100644 --- a/integration/src/test/java/io/github/dfa1/vortex/integration/FileSizeComparisonIntegrationTest.java +++ b/integration/src/test/java/io/github/dfa1/vortex/integration/FileSizeComparisonIntegrationTest.java @@ -201,11 +201,10 @@ void fileSizeComparison(@TempDir Path tmp) throws IOException { (double) javaSize / jniSize, (double) csvSize / javaSize); - // Then — Java beats CSV - assertThat(javaSize).isLessThan(csvSize); - - // Then — Java within 2x of JNI (both use cascading(3)) - assertThat(javaSize).isLessThan(jniSize * 2); + // Then — Java beats CSV, and stays within 2x of JNI (both use cascading(3)) + assertThat(javaSize) + .isLessThan(csvSize) + .isLessThan(jniSize * 2); // Then — Java file is readable with correct row count var totalRows = new java.util.concurrent.atomic.AtomicLong(); diff --git a/integration/src/test/java/io/github/dfa1/vortex/integration/OhlcEncodingInspectionIntegrationTest.java b/integration/src/test/java/io/github/dfa1/vortex/integration/OhlcEncodingInspectionIntegrationTest.java index 3204e77f..089b8fc6 100644 --- a/integration/src/test/java/io/github/dfa1/vortex/integration/OhlcEncodingInspectionIntegrationTest.java +++ b/integration/src/test/java/io/github/dfa1/vortex/integration/OhlcEncodingInspectionIntegrationTest.java @@ -132,8 +132,7 @@ void inspect_ohlcFile_showsColumnEncodings(@TempDir Path tmp) throws IOException // Then System.out.println(result); - assertThat(result).contains("volume"); - assertThat(result).contains("Used encodings:"); + assertThat(result).contains("volume").contains("Used encodings:"); } @Test diff --git a/integration/src/test/java/io/github/dfa1/vortex/integration/VortexInspectorIntegrationTest.java b/integration/src/test/java/io/github/dfa1/vortex/integration/VortexInspectorIntegrationTest.java index 6cf08aad..7402326e 100644 --- a/integration/src/test/java/io/github/dfa1/vortex/integration/VortexInspectorIntegrationTest.java +++ b/integration/src/test/java/io/github/dfa1/vortex/integration/VortexInspectorIntegrationTest.java @@ -81,11 +81,12 @@ void inspect_showsFileInfoAndEncodings(@TempDir Path tmp) throws IOException { // Then System.out.println(result); - assertThat(result).contains("Vortex v"); - assertThat(result).contains("id"); - assertThat(result).contains("value"); - assertThat(result).contains("Registered encodings:"); - assertThat(result).contains("Used encodings:"); - assertThat(result).contains("Layout:"); + assertThat(result) + .contains("Vortex v") + .contains("id") + .contains("value") + .contains("Registered encodings:") + .contains("Used encodings:") + .contains("Layout:"); } } diff --git a/proto-gen/src/test/java/io/github/dfa1/vortex/protogen/CodeGenTest.java b/proto-gen/src/test/java/io/github/dfa1/vortex/protogen/CodeGenTest.java index 41b3b2d2..bd11e492 100644 --- a/proto-gen/src/test/java/io/github/dfa1/vortex/protogen/CodeGenTest.java +++ b/proto-gen/src/test/java/io/github/dfa1/vortex/protogen/CodeGenTest.java @@ -49,12 +49,13 @@ void generatedBitPackedMetadataHasExpectedComponents(@TempDir Path tmp) throws I String src = Files.readString(tmp.resolve("ProtoBitPackedMetadata.java")); // Then - assertThat(src).contains("public record ProtoBitPackedMetadata("); - assertThat(src).contains("int bit_width"); - assertThat(src).contains("int offset"); - assertThat(src).contains("ProtoPatchesMetadata patches"); - assertThat(src).contains("public static ProtoBitPackedMetadata decode(MemorySegment __seg, long __off, long __len)"); - assertThat(src).contains("public byte[] encode()"); + assertThat(src) + .contains("public record ProtoBitPackedMetadata(") + .contains("int bit_width") + .contains("int offset") + .contains("ProtoPatchesMetadata patches") + .contains("public static ProtoBitPackedMetadata decode(MemorySegment __seg, long __off, long __len)") + .contains("public byte[] encode()"); } private static Ast.ProtoFile parse(Path p) throws IOException { diff --git a/reader/src/test/java/io/github/dfa1/vortex/reader/array/ArrayMaterializeTest.java b/reader/src/test/java/io/github/dfa1/vortex/reader/array/ArrayMaterializeTest.java index 0701be53..c7c2367e 100644 --- a/reader/src/test/java/io/github/dfa1/vortex/reader/array/ArrayMaterializeTest.java +++ b/reader/src/test/java/io/github/dfa1/vortex/reader/array/ArrayMaterializeTest.java @@ -125,7 +125,7 @@ void zigzagDecodesSignedZigzagPattern() { MemorySegment result = sut.materialize(arena); // Then - assertThat(result.getAtIndex(VortexFormat.LE_LONG, 0)).isEqualTo(0L); + assertThat(result.getAtIndex(VortexFormat.LE_LONG, 0)).isZero(); assertThat(result.getAtIndex(VortexFormat.LE_LONG, 1)).isEqualTo(-1L); assertThat(result.getAtIndex(VortexFormat.LE_LONG, 2)).isEqualTo(1L); assertThat(result.getAtIndex(VortexFormat.LE_LONG, 3)).isEqualTo(-2L); @@ -159,7 +159,7 @@ void chunkedConcatenatesChildrenInOrder() { // Then one contiguous segment spanning both chunks assertThat(result.byteSize()).isEqualTo(5 * 8L); - assertThat(result.getAtIndex(VortexFormat.LE_LONG, 0)).isEqualTo(0L); + assertThat(result.getAtIndex(VortexFormat.LE_LONG, 0)).isZero(); assertThat(result.getAtIndex(VortexFormat.LE_LONG, 3)).isEqualTo(3L); assertThat(result.getAtIndex(VortexFormat.LE_LONG, 4)).isEqualTo(4L); } diff --git a/reader/src/test/java/io/github/dfa1/vortex/reader/compute/PredicateTest.java b/reader/src/test/java/io/github/dfa1/vortex/reader/compute/PredicateTest.java index 49189098..7f7a13aa 100644 --- a/reader/src/test/java/io/github/dfa1/vortex/reader/compute/PredicateTest.java +++ b/reader/src/test/java/io/github/dfa1/vortex/reader/compute/PredicateTest.java @@ -291,8 +291,7 @@ void structurallyIdenticalTreesAreEqual() { Predicate result = new Predicate.And(new Predicate.Gt(0), new Predicate.Lt(10)); // Then the record contract gives value equality and matching hash codes - assertThat(sut).isEqualTo(result); - assertThat(sut).hasSameHashCodeAs(result); + assertThat(sut).isEqualTo(result).hasSameHashCodeAs(result); } @Test @@ -316,8 +315,7 @@ void noArgVariantsOfSameTypeAreEqual() { Predicate result = new Predicate.IsNull(); // Then they are equal, while a different no-arg variant is not - assertThat(sut).isEqualTo(result); - assertThat(sut).isNotEqualTo(new Predicate.IsNotNull()); + assertThat(sut).isEqualTo(result).isNotEqualTo(new Predicate.IsNotNull()); } } diff --git a/reader/src/test/java/io/github/dfa1/vortex/reader/decode/BoolEncodingDecoderTest.java b/reader/src/test/java/io/github/dfa1/vortex/reader/decode/BoolEncodingDecoderTest.java index fbf7e684..48e7cf29 100644 --- a/reader/src/test/java/io/github/dfa1/vortex/reader/decode/BoolEncodingDecoderTest.java +++ b/reader/src/test/java/io/github/dfa1/vortex/reader/decode/BoolEncodingDecoderTest.java @@ -72,8 +72,7 @@ void decode_nonNullable_returnsBoolArray(String name, boolean[] values) { var result = sut.decode(ctx); // Then — non-nullable path returns a plain BoolArray, not a MaskedArray - assertThat(result).isInstanceOf(BoolArray.class); - assertThat(result).isNotInstanceOf(MaskedArray.class); + assertThat(result).isInstanceOf(BoolArray.class).isNotInstanceOf(MaskedArray.class); assertThat(result.length()).isEqualTo(values.length); BoolArray boolArr = (BoolArray) result; for (int i = 0; i < values.length; i++) { diff --git a/writer/src/test/java/io/github/dfa1/vortex/writer/ColumnZoneStatsTest.java b/writer/src/test/java/io/github/dfa1/vortex/writer/ColumnZoneStatsTest.java index 987459ae..f6ddf17d 100644 --- a/writer/src/test/java/io/github/dfa1/vortex/writer/ColumnZoneStatsTest.java +++ b/writer/src/test/java/io/github/dfa1/vortex/writer/ColumnZoneStatsTest.java @@ -79,7 +79,7 @@ void perZoneMinMaxSumNullCount(@TempDir Path tmp) throws IOException { assertThat(result.get(0).min()).isEqualTo(1L); assertThat(result.get(0).max()).isEqualTo(50L); assertThat(result.get(0).sum()).isEqualTo(1275L); // 1+..+50 - assertThat(result.get(0).nullCount()).isEqualTo(0L); + assertThat(result.get(0).nullCount()).isZero(); assertThat(result.get(1).min()).isEqualTo(51L); assertThat(result.get(1).max()).isEqualTo(100L); assertThat(result.get(1).sum()).isEqualTo(3775L); // 51+..+100