Skip to content

Commit bd3bd7c

Browse files
committed
add tests
1 parent 78fa912 commit bd3bd7c

File tree

2 files changed

+72
-11
lines changed

2 files changed

+72
-11
lines changed

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

Lines changed: 71 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.zarr.zarrjava;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import dev.zarr.zarrjava.core.chunkkeyencoding.Separator;
4+
import dev.zarr.zarrjava.core.Attributes;
55
import dev.zarr.zarrjava.store.*;
66
import dev.zarr.zarrjava.v3.*;
77
import org.junit.jupiter.api.Assertions;
@@ -14,6 +14,8 @@
1414

1515
import java.io.IOException;
1616
import java.nio.file.Files;
17+
import java.util.Arrays;
18+
import java.util.stream.Stream;
1719

1820
import static dev.zarr.zarrjava.v3.Node.makeObjectMapper;
1921

@@ -82,19 +84,79 @@ public void testHttpStore() throws IOException, ZarrException {
8284

8385
@ParameterizedTest
8486
@CsvSource({
85-
"DOT", "SLASH"
87+
"false,MemoryStore",
88+
"false,ConcurrentMemoryStore",
89+
"true,ConcurrentMemoryStore",
8690
})
87-
public void testMemoryStore(Separator separator) throws ZarrException, IOException {
88-
StoreHandle storeHandle = new MemoryStore(separator).resolve();
91+
public void testMemoryStoreV3(boolean useParallel, String storeType) throws ZarrException, IOException {
92+
int[] testData = new int[1024 * 1024];
93+
Arrays.setAll(testData, p -> p);
94+
95+
StoreHandle storeHandle;
96+
switch (storeType) {
97+
case "ConcurrentMemoryStore":
98+
storeHandle = new ConcurrentMemoryStore().resolve();
99+
break;
100+
case "MemoryStore":
101+
storeHandle = new MemoryStore().resolve();
102+
break;
103+
default:
104+
throw new IllegalArgumentException("Unknown store type: " + storeType);
105+
}
106+
89107
Group group = Group.create(storeHandle);
90108
Array array = group.createArray("array", b -> b
91-
.withShape(10, 10)
92-
.withDataType(DataType.UINT8)
109+
.withShape(1024, 1024)
110+
.withDataType(DataType.UINT32)
93111
.withChunkShape(5, 5)
94112
);
113+
array.write(ucar.ma2.Array.factory(ucar.ma2.DataType.UINT, new int[]{1024, 1024}, testData), useParallel);
95114
group.createGroup("subgroup");
96-
Assertions.assertEquals(2, group.list().count());
97-
for(String s: storeHandle.list().toArray(String[]::new))
98-
System.out.println(s);
115+
group.setAttributes(new Attributes().set("description", "test group"));
116+
Stream<dev.zarr.zarrjava.core.Node> nodes = group.list();
117+
Assertions.assertEquals(2, nodes.count());
118+
119+
ucar.ma2.Array result = array.read(useParallel);
120+
Assertions.assertArrayEquals(testData, (int[]) result.get1DJavaArray(ucar.ma2.DataType.UINT));
121+
Assertions.assertNotNull(group.metadata().attributes);
122+
Assertions.assertEquals("test group", group.metadata().attributes.getString("description"));
123+
}
124+
125+
@ParameterizedTest
126+
@CsvSource({
127+
"false,MemoryStore",
128+
"false,ConcurrentMemoryStore",
129+
"true,ConcurrentMemoryStore",
130+
})
131+
public void testMemoryStoreV2(boolean useParallel, String storeType) throws ZarrException, IOException {
132+
int[] testData = new int[1024 * 1024];
133+
Arrays.setAll(testData, p -> p);
134+
135+
StoreHandle storeHandle;
136+
switch (storeType) {
137+
case "ConcurrentMemoryStore":
138+
storeHandle = new ConcurrentMemoryStore().resolve();
139+
break;
140+
case "MemoryStore":
141+
storeHandle = new MemoryStore().resolve();
142+
break;
143+
default:
144+
throw new IllegalArgumentException("Unknown store type: " + storeType);
145+
}
146+
147+
dev.zarr.zarrjava.v2.Group group = dev.zarr.zarrjava.v2.Group.create(storeHandle);
148+
dev.zarr.zarrjava.v2.Array array = group.createArray("array", b -> b
149+
.withShape(1024, 1024)
150+
.withDataType(dev.zarr.zarrjava.v2.DataType.UINT32)
151+
.withChunks(5, 5)
152+
);
153+
array.write(ucar.ma2.Array.factory(ucar.ma2.DataType.UINT, new int[]{1024, 1024}, testData), useParallel);
154+
group.createGroup("subgroup");
155+
Stream<dev.zarr.zarrjava.core.Node> nodes = group.list();
156+
group.setAttributes(new Attributes().set("description", "test group"));
157+
Assertions.assertEquals(2, nodes.count());
158+
159+
ucar.ma2.Array result = array.read(useParallel);
160+
Assertions.assertArrayEquals(testData, (int[]) result.get1DJavaArray(ucar.ma2.DataType.UINT));
99161
}
100162
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ public void testParallel(boolean useParallel) throws IOException, ZarrException
388388
int[] testData = new int[512 * 512 * 512];
389389
Arrays.setAll(testData, p -> p);
390390

391-
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testParallelRead");
391+
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testParallelRead", useParallel ? "parallel" : "serial");
392392
ArrayMetadata metadata = Array.metadataBuilder()
393393
.withShape(512, 512, 512)
394394
.withDataType(DataType.UINT32)
@@ -402,7 +402,6 @@ public void testParallel(boolean useParallel) throws IOException, ZarrException
402402
ucar.ma2.Array result = readArray.read(useParallel);
403403

404404
Assertions.assertArrayEquals(testData, (int[]) result.get1DJavaArray(ucar.ma2.DataType.UINT));
405-
clearTestoutputFolder();
406405
}
407406

408407
@Test

0 commit comments

Comments
 (0)