Skip to content

Commit 7e5d2ba

Browse files
committed
add zstd to ZarrPythonTests.testWriteV2
1 parent 88c158b commit 7e5d2ba

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

src/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import dev.zarr.zarrjava.v2.codec.Codec;
99
import dev.zarr.zarrjava.v2.codec.core.BloscCodec;
1010
import dev.zarr.zarrjava.v2.codec.core.ZlibCodec;
11+
import dev.zarr.zarrjava.v2.codec.core.ZstdCodec;
1112

1213
public class ArrayMetadataBuilder {
1314
long[] shape = null;
@@ -129,6 +130,23 @@ public ArrayMetadataBuilder withZlibCompressor() {
129130
return withZlibCompressor(5);
130131
}
131132

133+
public ArrayMetadataBuilder withZstdCompressor(int level, boolean checksum) {
134+
try {
135+
this.compressor = new ZstdCodec(level, checksum);
136+
} catch (ZarrException e) {
137+
throw new RuntimeException(e);
138+
}
139+
return this;
140+
}
141+
142+
public ArrayMetadataBuilder withZstdCompressor(int level) {
143+
return withZstdCompressor(level, ZstdCodec.DEFAULT_CHECKSUM);
144+
}
145+
146+
public ArrayMetadataBuilder withZstdCompressor() {
147+
return withZstdCompressor(ZstdCodec.DEFAULT_LEVEL);
148+
}
149+
132150
public ArrayMetadataBuilder putAttribute(String key, Object value) {
133151
this.attributes.put(key, value);
134152
return this;

src/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@
1111

1212
public class ZstdCodec extends dev.zarr.zarrjava.core.codec.core.ZstdCodec implements Codec {
1313

14+
public static final int DEFAULT_LEVEL = 0;
15+
public static final boolean DEFAULT_CHECKSUM = false;
1416
@JsonIgnore
1517
public final String id = "zstd";
1618
public final int level;
1719
public final boolean checksum;
1820

1921
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
2022
public ZstdCodec(
21-
@JsonProperty(value = "level", defaultValue = "0") int level,
22-
@JsonProperty(value = "checksum", defaultValue = "false") boolean checksum) throws ZarrException {
23+
@JsonProperty(value = "level", defaultValue = "" + DEFAULT_LEVEL) int level,
24+
@JsonProperty(value = "checksum", defaultValue = "" + DEFAULT_CHECKSUM) boolean checksum) throws ZarrException {
2325
if (level < -131072 || level > 22) {
2426
throw new ZarrException("'level' needs to be between -131072 and 22.");
2527
}

src/test/java/dev/zarr/zarrjava/ZarrPythonTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ public void testWriteV2(String compressor, String compressorParam, dev.zarr.zarr
244244
case "zlib":
245245
builder = builder.withZlibCompressor(Integer.parseInt(compressorParam));
246246
break;
247+
case "zstd":
248+
builder = builder.withZstdCompressor(Integer.parseInt(compressorParam.split("_")[0]), Boolean.parseBoolean(compressorParam.split("_")[1]));
249+
break;
247250
default:
248251
throw new IllegalArgumentException("Invalid compressor: " + compressor);
249252
}

0 commit comments

Comments
 (0)