11package io .tiledb .java .api ;
22
3+ import static io .tiledb .java .api .Datatype .*;
34import static io .tiledb .java .api .Layout .TILEDB_ROW_MAJOR ;
45import static io .tiledb .java .api .QueryType .TILEDB_READ ;
56import static io .tiledb .java .api .QueryType .TILEDB_WRITE ;
@@ -309,37 +310,50 @@ public void testArrayMetadata() throws Exception {
309310 String floatKey = "md-float" ;
310311 String doubleKey = "md-double" ;
311312
312- Assert .assertFalse (array .hasMetadataKey (byteKey ));
313- Assert .assertFalse (array .hasMetadataKey (shortKey ));
314- Assert .assertFalse (array .hasMetadataKey (intKey ));
315- Assert .assertFalse (array .hasMetadataKey (floatKey ));
316- Assert .assertFalse (array .hasMetadataKey (doubleKey ));
313+ // metadata keys sorted in a lexicographic ordering
314+ String [] keys = new String [] {byteKey , doubleKey , floatKey , intKey , shortKey };
315+ Datatype [] types =
316+ new Datatype [] {TILEDB_INT8 , TILEDB_FLOAT64 , TILEDB_FLOAT32 , TILEDB_INT32 , TILEDB_INT16 };
317+ int keysNum = keys .length ;
318+ NativeArray [] nativeArrays =
319+ new NativeArray [] {metadataByte , metadataDouble , metadataFloat , metadataInt , metadataShort };
320+ Object [] expectedArrays =
321+ new Object [] {
322+ metadataByte .toJavaArray (),
323+ metadataDouble .toJavaArray (),
324+ metadataFloat .toJavaArray (),
325+ metadataInt .toJavaArray (),
326+ metadataShort .toJavaArray ()
327+ };
328+
329+ for (int i = 0 ; i < keysNum ; i ++) {
330+ Assert .assertFalse (array .hasMetadataKey (keys [i ]));
331+ }
332+
317333 Assert .assertEquals (0 , array .getMetadataNum ().intValue ());
318334 array .close ();
319335
320- arrayw .putMetadata (byteKey , metadataByte );
321- arrayw .putMetadata (shortKey , metadataShort );
322- arrayw .putMetadata (intKey , metadataInt );
323- arrayw .putMetadata (floatKey , metadataFloat );
324- arrayw .putMetadata (doubleKey , metadataDouble );
336+ for (int i = 0 ; i < keysNum ; i ++) {
337+ arrayw .putMetadata (keys [i ], nativeArrays [i ]);
338+ }
325339 // submit changes
326340 arrayw .close ();
327341
328342 // open a new session
329343 Array arrayn = new Array (ctx , arrayURI , TILEDB_READ );
330344
331- Assert .assertTrue (arrayn .hasMetadataKey (byteKey ));
332- Assert .assertTrue (arrayn .hasMetadataKey (shortKey ));
333- Assert .assertTrue (arrayn .hasMetadataKey (intKey ));
334- Assert .assertTrue (arrayn .hasMetadataKey (floatKey ));
335- Assert .assertTrue (arrayn .hasMetadataKey (doubleKey ));
336- Assert .assertEquals (5 , arrayn .getMetadataNum ().intValue ());
345+ for (int i = 0 ; i < keysNum ; i ++) {
346+ Assert .assertTrue (arrayn .hasMetadataKey (keys [i ]));
347+ }
348+
349+ Assert .assertEquals (keysNum , arrayn .getMetadataNum ().intValue ());
337350
338- NativeArray metadataByteActual = arrayn .getMetadata (byteKey , Datatype .TILEDB_INT8 );
339- NativeArray metadataShortActual = arrayn .getMetadata (shortKey , Datatype .TILEDB_INT16 );
340- NativeArray metadataIntActual = arrayn .getMetadata (intKey , Datatype .TILEDB_INT32 );
341- NativeArray metadataFloatActual = arrayn .getMetadata (floatKey , Datatype .TILEDB_FLOAT32 );
342- NativeArray metadataDoubleActual = arrayn .getMetadata (doubleKey , Datatype .TILEDB_FLOAT64 );
351+ // manual extraction of metadata
352+ NativeArray metadataByteActual = arrayn .getMetadata (byteKey , TILEDB_INT8 );
353+ NativeArray metadataShortActual = arrayn .getMetadata (shortKey , TILEDB_INT16 );
354+ NativeArray metadataIntActual = arrayn .getMetadata (intKey , TILEDB_INT32 );
355+ NativeArray metadataFloatActual = arrayn .getMetadata (floatKey , TILEDB_FLOAT32 );
356+ NativeArray metadataDoubleActual = arrayn .getMetadata (doubleKey , TILEDB_FLOAT64 );
343357
344358 Assert .assertNotNull (metadataByteActual );
345359 Assert .assertNotNull (metadataShortActual );
@@ -360,43 +374,43 @@ public void testArrayMetadata() throws Exception {
360374 (double []) metadataDoubleActual .toJavaArray (),
361375 1e-10d );
362376
363- // fromIndex tests
364- // metadata keys sorted in a lexicographic ordering
365- String [] expectedKeys = new String [] {byteKey , doubleKey , floatKey , intKey , shortKey };
366- Object [] expectedArrays =
367- new Object [] {
368- metadataByte .toJavaArray (),
369- metadataDouble .toJavaArray (),
370- metadataFloat .toJavaArray (),
371- metadataInt .toJavaArray (),
372- metadataShort .toJavaArray ()
373- };
377+ // exctracion of metadata without specifying the Datatype
378+ for (int i = 0 ; i < keysNum ; i ++) {
379+ NativeArray a = arrayn .getMetadata (keys [i ]);
380+ Assert .assertNotNull (a );
381+ Assert .assertEquals (types [i ], a .getNativeType ());
382+ Assert .assertEquals (nativeArrays [i ].getNativeType (), a .getNativeType ());
383+ Assert .assertArrayEquals (getArray (expectedArrays [i ]), getArray (a .toJavaArray ()));
384+ }
374385
386+ // fromIndex tests
375387 for (int i = 0 ; i < arrayn .getMetadataNum ().intValue (); i ++) {
376- Pair <String , NativeArray > p = arrayn .getMetadataFromIndex (BigInteger .valueOf (i ));
377- Assert .assertEquals (expectedKeys [i ], p .getFirst ());
378- Assert .assertArrayEquals (getArray (expectedArrays [i ]), getArray (p .getSecond ().toJavaArray ()));
388+ Pair <String , NativeArray > p = arrayn .getMetadataFromIndex (i );
389+ NativeArray a = p .getSecond ();
390+ Assert .assertEquals (keys [i ], p .getFirst ());
391+ Assert .assertEquals (types [i ], a .getNativeType ());
392+ Assert .assertEquals (nativeArrays [i ].getNativeType (), a .getNativeType ());
393+ Assert .assertArrayEquals (getArray (expectedArrays [i ]), getArray (a .toJavaArray ()));
379394 }
380395
381396 arrayn .close ();
382397
383398 // open a new write session
384399 Array arrayd = new Array (ctx , arrayURI , TILEDB_WRITE );
385400
386- arrayd .deleteMetadata (byteKey );
387- arrayd .deleteMetadata (shortKey );
388- arrayd .deleteMetadata (intKey );
389- arrayd .deleteMetadata (floatKey );
390- arrayd .deleteMetadata (doubleKey );
401+ for (int i = 0 ; i < keysNum ; i ++) {
402+ arrayd .deleteMetadata (keys [i ]);
403+ }
404+
391405 arrayd .close ();
392406
393407 // open a new session to check the deletion
394408 Array arraydn = new Array (ctx , arrayURI , TILEDB_READ );
395- Assert . assertFalse ( arraydn . hasMetadataKey ( byteKey ));
396- Assert . assertFalse ( arraydn . hasMetadataKey ( shortKey ));
397- Assert .assertFalse (arraydn .hasMetadataKey (intKey ));
398- Assert . assertFalse ( arraydn . hasMetadataKey ( floatKey ));
399- Assert . assertFalse ( arraydn . hasMetadataKey ( doubleKey ));
409+
410+ for ( int i = 0 ; i < keysNum ; i ++) {
411+ Assert .assertFalse (arraydn .hasMetadataKey (keys [ i ] ));
412+ }
413+
400414 Assert .assertEquals (0 , arraydn .getMetadataNum ().intValue ());
401415
402416 arraydn .close ();
0 commit comments