Skip to content

Commit 8eced24

Browse files
committed
Make getMetadataFromIndex signature more strict and improve tests
1 parent ddb7ed8 commit 8eced24

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/main/java/io/tiledb/java/api/Array.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -684,10 +684,10 @@ public BigInteger getMetadataNum() throws TileDBError {
684684
* otherwise the function will error out.
685685
*
686686
* @param index index to retrieve metadata from
687-
* @return a pair, key and the metadata NativeArray
687+
* @return a pair, key and the metadata
688688
* @throws TileDBError A TileDB exception
689689
*/
690-
public Pair getMetadataFromIndex(BigInteger index) throws TileDBError {
690+
public Pair<String, NativeArray> getMetadataFromIndex(BigInteger index) throws TileDBError {
691691
checkIsOpen();
692692

693693
SWIGTYPE_p_p_char key = tiledb.new_charpp();
@@ -711,7 +711,7 @@ public Pair getMetadataFromIndex(BigInteger index) throws TileDBError {
711711
tiledb.delete_charpp(key);
712712
tiledb.delete_tiledb_datatype_tp(value_type);
713713

714-
return new Pair(keyString, result);
714+
return new Pair<String, NativeArray>(keyString, result);
715715
}
716716

717717
/**

src/test/java/io/tiledb/java/api/ArrayTest.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ public void tearDown() throws Exception {
3434
ctx.close();
3535
}
3636

37+
private Object[] getArray(Object val) {
38+
if (val instanceof Object[]) return (Object[]) val;
39+
int arrlength = java.lang.reflect.Array.getLength(val);
40+
Object[] outputArray = new Object[arrlength];
41+
for (int i = 0; i < arrlength; i++) {
42+
outputArray[i] = java.lang.reflect.Array.get(val, i);
43+
}
44+
return outputArray;
45+
}
46+
3747
public ArraySchema schemaCreate() throws Exception {
3848
Dimension<Long> d1 =
3949
new Dimension<Long>(ctx, "d1", Long.class, new Pair<Long, Long>(1l, 4l), 2l);
@@ -287,7 +297,7 @@ public void testArrayMetadata() throws Exception {
287297

288298
arrayw.putMetadata(intKey, metadataInt);
289299
arrayw.putMetadata(floatKey, metadataFloat);
290-
// commit changes
300+
// submit changes
291301
arrayw.close();
292302

293303
// open a new session
@@ -309,17 +319,13 @@ public void testArrayMetadata() throws Exception {
309319
(float[]) metadataFloat.toJavaArray(), (float[]) metadataFloatActual.toJavaArray(), 1e-10f);
310320

311321
// fromIndex tests
312-
String[] keys = new String[] {floatKey, intKey};
322+
String[] expectedKeys = new String[] {floatKey, intKey};
323+
Object[] expectedArrays = new Object[] {metadataFloat.toJavaArray(), metadataInt.toJavaArray()};
324+
313325
for (int i = 0; i < arrayn.getMetadataNum().intValue(); i++) {
314326
Pair<String, NativeArray> p = arrayn.getMetadataFromIndex(BigInteger.valueOf(i));
315-
Assert.assertEquals(p.getFirst(), keys[i]);
316-
if (i == 0) {
317-
Assert.assertArrayEquals(
318-
(float[]) metadataFloat.toJavaArray(), (float[]) p.getSecond().toJavaArray(), 1e-10f);
319-
} else {
320-
Assert.assertArrayEquals(
321-
(int[]) metadataInt.toJavaArray(), (int[]) p.getSecond().toJavaArray());
322-
}
327+
Assert.assertEquals(p.getFirst(), expectedKeys[i]);
328+
Assert.assertArrayEquals(getArray(expectedArrays[i]), getArray(p.getSecond().toJavaArray()));
323329
}
324330

325331
arrayn.close();

0 commit comments

Comments
 (0)