Skip to content

Commit 12a0f94

Browse files
committed
add API tests for open, create and refactor tests structure
1 parent c03f3c6 commit 12a0f94

File tree

5 files changed

+844
-639
lines changed

5 files changed

+844
-639
lines changed
Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
package dev.zarr.zarrjava;
2+
3+
import dev.zarr.zarrjava.core.Node;
4+
import dev.zarr.zarrjava.store.FilesystemStore;
5+
import dev.zarr.zarrjava.store.StoreHandle;
6+
import dev.zarr.zarrjava.v2.ArrayMetadata;
7+
import dev.zarr.zarrjava.v3.Array;
8+
import dev.zarr.zarrjava.v3.Group;
9+
import org.junit.jupiter.api.Assertions;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.io.IOException;
13+
import java.nio.file.Files;
14+
import java.nio.file.NoSuchFileException;
15+
import java.nio.file.Path;
16+
import java.nio.file.Paths;
17+
18+
19+
public class ZarrApiTest extends ZarrTest {
20+
21+
@Test
22+
public void testGenericOpenV3() throws ZarrException, IOException {
23+
StoreHandle arrayHandle = new FilesystemStore(TESTDATA).resolve("l4_sample", "color", "1");
24+
StoreHandle groupHandle = new FilesystemStore(TESTDATA).resolve("l4_sample");
25+
StoreHandle v2Handle = new FilesystemStore(TESTDATA).resolve("v2_sample");
26+
27+
Array array = (Array) Node.open(arrayHandle);
28+
Assertions.assertEquals(4, (array).metadata.shape.length);
29+
30+
array = (Array) dev.zarr.zarrjava.core.Array.open(arrayHandle);
31+
Assertions.assertEquals(4, (array).metadata.shape.length);
32+
33+
array = (Array) dev.zarr.zarrjava.v3.Node.open(arrayHandle);
34+
Assertions.assertEquals(4, (array).metadata.shape.length);
35+
36+
Group group = (Group) Node.open(groupHandle);
37+
Assertions.assertInstanceOf(Group.class, group.get("color"));
38+
39+
group = (Group) dev.zarr.zarrjava.core.Group.open(groupHandle);
40+
Assertions.assertInstanceOf(Group.class, group.get("color"));
41+
42+
group = (Group) dev.zarr.zarrjava.v3.Node.open(groupHandle);
43+
Assertions.assertInstanceOf(Group.class, group.get("color"));
44+
45+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing")));
46+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Node.open(v2Handle));
47+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Group.open(v2Handle));
48+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Array.open(v2Handle));
49+
}
50+
51+
@Test
52+
public void testGenericOpenOverloadsV3() throws ZarrException, IOException {
53+
Path arrayPath = TESTDATA.resolve("l4_sample/color/1");
54+
Path groupPath = TESTDATA.resolve("l4_sample");
55+
Path v2GroupPath = TESTDATA.resolve("v2_sample");
56+
57+
Array array = (Array) Node.open(arrayPath);
58+
Assertions.assertEquals(4, (array).metadata.shape.length);
59+
array = (Array) Node.open(arrayPath.toString());
60+
Assertions.assertEquals(4, (array).metadata.shape.length);
61+
62+
array = (Array) dev.zarr.zarrjava.core.Array.open(arrayPath);
63+
Assertions.assertEquals(4, (array).metadata.shape.length);
64+
array = (Array) dev.zarr.zarrjava.core.Array.open(arrayPath.toString());
65+
Assertions.assertEquals(4, (array).metadata.shape.length);
66+
67+
array = (Array) dev.zarr.zarrjava.v3.Node.open(arrayPath);
68+
Assertions.assertEquals(4, (array).metadata.shape.length);
69+
array = (Array) dev.zarr.zarrjava.v3.Node.open(arrayPath.toString());
70+
Assertions.assertEquals(4, (array).metadata.shape.length);
71+
72+
Group group = (Group) Node.open(groupPath);
73+
Assertions.assertInstanceOf(Group.class, group.get("color"));
74+
group = (Group) Node.open(groupPath.toString());
75+
Assertions.assertInstanceOf(Group.class, group.get("color"));
76+
77+
group = (Group) dev.zarr.zarrjava.core.Group.open(groupPath);
78+
Assertions.assertInstanceOf(Group.class, group.get("color"));
79+
group = (Group) dev.zarr.zarrjava.core.Group.open(groupPath.toString());
80+
Assertions.assertInstanceOf(Group.class, group.get("color"));
81+
82+
group = (Group) dev.zarr.zarrjava.v3.Node.open(groupPath);
83+
Assertions.assertInstanceOf(Group.class, group.get("color"));
84+
group = (Group) dev.zarr.zarrjava.v3.Node.open(groupPath.toString());
85+
Assertions.assertInstanceOf(Group.class, group.get("color"));
86+
87+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing")));
88+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing").toString()));
89+
90+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Node.open(v2GroupPath));
91+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Node.open(v2GroupPath.toString()));
92+
93+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Group.open(v2GroupPath));
94+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Group.open(v2GroupPath.toString()));
95+
96+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Array.open(v2GroupPath));
97+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v3.Array.open(v2GroupPath.toString()));
98+
}
99+
100+
@Test
101+
public void testGenericOpenV2() throws ZarrException, IOException {
102+
StoreHandle arrayHandle = new FilesystemStore(TESTDATA).resolve("v2_sample", "subgroup", "array");
103+
StoreHandle groupHandle = new FilesystemStore(TESTDATA).resolve("v2_sample");
104+
StoreHandle v3Handle = new FilesystemStore(TESTDATA).resolve("l4_sample");
105+
106+
dev.zarr.zarrjava.v2.Array array = (dev.zarr.zarrjava.v2.Array) Node.open(arrayHandle);
107+
Assertions.assertEquals(3, (array).metadata.shape.length);
108+
109+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.core.Array.open(arrayHandle);
110+
Assertions.assertEquals(3, (array).metadata.shape.length);
111+
112+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.v2.Node.open(arrayHandle);
113+
Assertions.assertEquals(3, (array).metadata.shape.length);
114+
115+
dev.zarr.zarrjava.v2.Group group = (dev.zarr.zarrjava.v2.Group) Node.open(groupHandle);
116+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
117+
118+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.core.Group.open(groupHandle);
119+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
120+
121+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.v2.Node.open(groupHandle);
122+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
123+
124+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing")));
125+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Node.open(v3Handle));
126+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Group.open(v3Handle));
127+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Array.open(v3Handle));
128+
}
129+
130+
@Test
131+
public void testGenericOpenOverloadsV2() throws ZarrException, IOException {
132+
Path arrayPath = TESTDATA.resolve("v2_sample/subgroup/array");
133+
Path groupPath = TESTDATA.resolve("v2_sample");
134+
Path v3GroupPath = TESTDATA.resolve("l4_sample");
135+
136+
dev.zarr.zarrjava.v2.Array array = (dev.zarr.zarrjava.v2.Array) Node.open(arrayPath);
137+
Assertions.assertEquals(3, (array).metadata.shape.length);
138+
array = (dev.zarr.zarrjava.v2.Array) Node.open(arrayPath.toString());
139+
Assertions.assertEquals(3, (array).metadata.shape.length);
140+
141+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.core.Array.open(arrayPath);
142+
Assertions.assertEquals(3, (array).metadata.shape.length);
143+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.core.Array.open(arrayPath.toString());
144+
Assertions.assertEquals(3, (array).metadata.shape.length);
145+
146+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.v2.Node.open(arrayPath);
147+
Assertions.assertEquals(3, (array).metadata.shape.length);
148+
array = (dev.zarr.zarrjava.v2.Array) dev.zarr.zarrjava.v2.Node.open(arrayPath.toString());
149+
Assertions.assertEquals(3, (array).metadata.shape.length);
150+
151+
dev.zarr.zarrjava.v2.Group group = (dev.zarr.zarrjava.v2.Group) Node.open(groupPath);
152+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
153+
group = (dev.zarr.zarrjava.v2.Group) Node.open(groupPath.toString());
154+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
155+
156+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.core.Group.open(groupPath);
157+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
158+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.core.Group.open(groupPath.toString());
159+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
160+
161+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.v2.Node.open(groupPath);
162+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
163+
group = (dev.zarr.zarrjava.v2.Group) dev.zarr.zarrjava.v2.Node.open(groupPath.toString());
164+
Assertions.assertInstanceOf(dev.zarr.zarrjava.v2.Group.class, group.get("subgroup"));
165+
166+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing")));
167+
Assertions.assertThrows(NoSuchFileException.class, () -> Node.open(new FilesystemStore(TESTDATA).resolve("non_existing").toString()));
168+
169+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Node.open(v3GroupPath));
170+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Node.open(v3GroupPath.toString()));
171+
172+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Group.open(v3GroupPath));
173+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Group.open(v3GroupPath.toString()));
174+
175+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Array.open(v3GroupPath));
176+
Assertions.assertThrows(NoSuchFileException.class, () -> dev.zarr.zarrjava.v2.Array.open(v3GroupPath.toString()));
177+
}
178+
179+
@Test
180+
public void testCreateArrayV2() throws ZarrException, IOException {
181+
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testCreateArrayV2");
182+
Path storeHandlePath = TESTOUTPUT.resolve("testCreateArrayV2Path");
183+
String storeHandleString = String.valueOf(TESTOUTPUT.resolve("testCreateArrayV2String"));
184+
ArrayMetadata arrayMetadata = dev.zarr.zarrjava.v2.Array.metadataBuilder()
185+
.withShape(10, 10)
186+
.withDataType(dev.zarr.zarrjava.v2.DataType.UINT8)
187+
.withChunks(5, 5)
188+
.build();
189+
190+
dev.zarr.zarrjava.v2.Array.create(storeHandle, arrayMetadata);
191+
Assertions.assertTrue(storeHandle.resolve(".zarray").exists());
192+
193+
dev.zarr.zarrjava.v2.Array.create(storeHandlePath, arrayMetadata);
194+
Assertions.assertTrue(Files.exists(storeHandlePath.resolve(".zarray")));
195+
196+
dev.zarr.zarrjava.v2.Array.create(storeHandleString, arrayMetadata);
197+
Assertions.assertTrue(Files.exists(Paths.get(storeHandleString).resolve(".zarray")));
198+
}
199+
200+
@Test
201+
public void testCreateGroupV2() throws ZarrException, IOException {
202+
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testCreateGroupV2");
203+
Path storeHandlePath = TESTOUTPUT.resolve("testCreateGroupV2Path");
204+
String storeHandleString = String.valueOf(TESTOUTPUT.resolve("testCreateGroupV2String"));
205+
206+
dev.zarr.zarrjava.v2.Group.create(storeHandle);
207+
Assertions.assertTrue(storeHandle.resolve(".zgroup").exists());
208+
209+
dev.zarr.zarrjava.v2.Group.create(storeHandlePath);
210+
Assertions.assertTrue(Files.exists(storeHandlePath.resolve(".zgroup")));
211+
212+
dev.zarr.zarrjava.v2.Group.create(storeHandleString);
213+
Assertions.assertTrue(Files.exists(Paths.get(storeHandleString).resolve(".zgroup")));
214+
}
215+
216+
@Test
217+
public void testCreateArrayV3() throws ZarrException, IOException {
218+
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testCreateArrayV3");
219+
Path storeHandlePath = TESTOUTPUT.resolve("testCreateArrayV3Path");
220+
String storeHandleString = String.valueOf(TESTOUTPUT.resolve("testCreateArrayV3String"));
221+
dev.zarr.zarrjava.v3.ArrayMetadata arrayMetadata = dev.zarr.zarrjava.v3.Array.metadataBuilder()
222+
.withShape(10, 10)
223+
.withDataType(dev.zarr.zarrjava.v3.DataType.UINT8)
224+
.withChunkShape(5, 5)
225+
.build();
226+
227+
dev.zarr.zarrjava.v3.Array.create(storeHandle, arrayMetadata);
228+
Assertions.assertTrue(storeHandle.resolve("zarr.json").exists());
229+
230+
dev.zarr.zarrjava.v3.Array.create(storeHandlePath, arrayMetadata);
231+
Assertions.assertTrue(Files.exists(storeHandlePath.resolve("zarr.json")));
232+
233+
dev.zarr.zarrjava.v3.Array.create(storeHandleString, arrayMetadata);
234+
Assertions.assertTrue(Files.exists(Paths.get(storeHandleString).resolve("zarr.json")));
235+
}
236+
237+
@Test
238+
public void testCreateGroupV3() throws ZarrException, IOException {
239+
StoreHandle storeHandle = new FilesystemStore(TESTOUTPUT).resolve("testCreateGroupV3");
240+
Path storeHandlePath = TESTOUTPUT.resolve("testCreateGroupV3Path");
241+
String storeHandleString = String.valueOf(TESTOUTPUT.resolve("testCreateGroupV3String"));
242+
243+
dev.zarr.zarrjava.v3.Group.create(storeHandle);
244+
Assertions.assertTrue(storeHandle.resolve("zarr.json").exists());
245+
246+
dev.zarr.zarrjava.v3.Group.create(storeHandlePath);
247+
Assertions.assertTrue(Files.exists(storeHandlePath.resolve("zarr.json")));
248+
249+
dev.zarr.zarrjava.v3.Group.create(storeHandleString);
250+
Assertions.assertTrue(Files.exists(Paths.get(storeHandleString).resolve("zarr.json")));
251+
}
252+
253+
}

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,17 @@
1717

1818
import java.io.*;
1919
import java.nio.ByteBuffer;
20-
import java.nio.file.Files;
2120
import java.nio.file.Path;
2221
import java.nio.file.Paths;
2322
import java.util.Arrays;
24-
import java.util.Comparator;
2523
import java.util.HashMap;
2624
import java.util.Map;
2725
import java.util.stream.Stream;
2826

29-
public class ZarrPythonTests {
27+
public class ZarrPythonTests extends ZarrTest {
3028

31-
final static Path TESTOUTPUT = Paths.get("testoutput");
3229
final static Path PYTHON_TEST_PATH = Paths.get("src/test/python-scripts/");
3330

34-
@BeforeAll
35-
public static void clearTestoutputFolder() throws IOException {
36-
if (Files.exists(TESTOUTPUT)) {
37-
try (Stream<Path> walk = Files.walk(TESTOUTPUT)) {
38-
walk.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
39-
}
40-
}
41-
Files.createDirectory(TESTOUTPUT);
42-
}
4331

4432
public static int runCommand(String... command) throws IOException, InterruptedException {
4533
ProcessBuilder pb = new ProcessBuilder();

0 commit comments

Comments
 (0)