@@ -268,6 +268,10 @@ public void testArrayMetadata() throws Exception {
268268    Array  arrayw  = new  Array (ctx , arrayURI , TILEDB_WRITE );
269269    Array  array  = new  Array (ctx , arrayURI , TILEDB_READ );
270270
271+     NativeArray  metadataByte  = new  NativeArray (ctx , new  byte [] {-7 , -6 , -5 , 0 , 100 }, Byte .class );
272+ 
273+     NativeArray  metadataShort  = new  NativeArray (ctx , new  short [] {18 , 19 , 20 , 21 }, Short .class );
274+ 
271275    NativeArray  metadataInt  =
272276        new  NativeArray (
273277            ctx ,
@@ -288,39 +292,87 @@ public void testArrayMetadata() throws Exception {
288292            },
289293            Float .class );
290294
295+     NativeArray  metadataDouble  =
296+         new  NativeArray (
297+             ctx ,
298+             new  double [] {
299+               1.1d , 1.2d , 2.1d , 2.2d , 3.1d , 3.2d , 4.1d , 4.2d ,
300+               5.1d , 5.2d , 6.1d , 6.2d , 7.1d , 7.2d , 8.1d , 8.2d ,
301+               9.1d , 9.2d , 10.1d , 10.2d , 11.1d , 11.2d , 12.1d , 12.2d ,
302+               13.1d , 14.2d , 14.1d , 14.2d , 15.1d , 15.2d , 16.1d , 16.2d 
303+             },
304+             Double .class );
305+ 
306+     String  byteKey  = "md-byte" ;
307+     String  shortKey  = "md-short" ;
291308    String  intKey  = "md-int" ;
292309    String  floatKey  = "md-float" ;
293-     Assert .assertEquals (false , array .hasMetadataKey (intKey ));
294-     Assert .assertEquals (false , array .hasMetadataKey (floatKey ));
310+     String  doubleKey  = "md-double" ;
311+ 
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 ));
295317    Assert .assertEquals (0 , array .getMetadataNum ().intValue ());
296318    array .close ();
297319
320+     arrayw .putMetadata (byteKey , metadataByte );
321+     arrayw .putMetadata (shortKey , metadataShort );
298322    arrayw .putMetadata (intKey , metadataInt );
299323    arrayw .putMetadata (floatKey , metadataFloat );
324+     arrayw .putMetadata (doubleKey , metadataDouble );
300325    // submit changes 
301326    arrayw .close ();
302327
303328    // open a new session 
304329    Array  arrayn  = new  Array (ctx , arrayURI , TILEDB_READ );
305330
306-     Assert .assertEquals (true , arrayn .hasMetadataKey (intKey ));
307-     Assert .assertEquals (true , arrayn .hasMetadataKey (floatKey ));
308-     Assert .assertEquals (2 , arrayn .getMetadataNum ().intValue ());
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 ());
309337
338+     NativeArray  metadataByteActual  = arrayn .getMetadata (byteKey , Datatype .TILEDB_INT8 );
339+     NativeArray  metadataShortActual  = arrayn .getMetadata (shortKey , Datatype .TILEDB_INT16 );
310340    NativeArray  metadataIntActual  = arrayn .getMetadata (intKey , Datatype .TILEDB_INT32 );
311341    NativeArray  metadataFloatActual  = arrayn .getMetadata (floatKey , Datatype .TILEDB_FLOAT32 );
342+     NativeArray  metadataDoubleActual  = arrayn .getMetadata (doubleKey , Datatype .TILEDB_FLOAT64 );
312343
344+     Assert .assertNotNull (metadataByteActual );
345+     Assert .assertNotNull (metadataShortActual );
313346    Assert .assertNotNull (metadataIntActual );
314347    Assert .assertNotNull (metadataFloatActual );
348+     Assert .assertNotNull (metadataDoubleActual );
349+ 
350+     System .out .println (metadataByte .getNativeType ().toString ());
315351
352+     Assert .assertArrayEquals (
353+         (byte []) metadataByte .toJavaArray (), (byte []) metadataByteActual .toJavaArray ());
354+     Assert .assertArrayEquals (
355+         (short []) metadataShort .toJavaArray (), (short []) metadataShortActual .toJavaArray ());
316356    Assert .assertArrayEquals (
317357        (int []) metadataInt .toJavaArray (), (int []) metadataIntActual .toJavaArray ());
318358    Assert .assertArrayEquals (
319359        (float []) metadataFloat .toJavaArray (), (float []) metadataFloatActual .toJavaArray (), 1e-10f );
360+     Assert .assertArrayEquals (
361+         (double []) metadataDouble .toJavaArray (),
362+         (double []) metadataDoubleActual .toJavaArray (),
363+         1e-10d );
320364
321365    // fromIndex tests 
322-     String [] expectedKeys  = new  String [] {floatKey , intKey };
323-     Object [] expectedArrays  = new  Object [] {metadataFloat .toJavaArray (), metadataInt .toJavaArray ()};
366+     // metadata keys sorted in a lexicographic ordering 
367+     String [] expectedKeys  = new  String [] {byteKey , doubleKey , floatKey , intKey , shortKey };
368+     Object [] expectedArrays  =
369+         new  Object [] {
370+           metadataByte .toJavaArray (),
371+           metadataDouble .toJavaArray (),
372+           metadataFloat .toJavaArray (),
373+           metadataInt .toJavaArray (),
374+           metadataShort .toJavaArray ()
375+         };
324376
325377    for  (int  i  = 0 ; i  < arrayn .getMetadataNum ().intValue (); i ++) {
326378      Pair <String , NativeArray > p  = arrayn .getMetadataFromIndex (BigInteger .valueOf (i ));
@@ -333,14 +385,20 @@ public void testArrayMetadata() throws Exception {
333385    // open a new write session 
334386    Array  arrayd  = new  Array (ctx , arrayURI , TILEDB_WRITE );
335387
388+     arrayd .deleteMetadata (byteKey );
389+     arrayd .deleteMetadata (shortKey );
336390    arrayd .deleteMetadata (intKey );
337391    arrayd .deleteMetadata (floatKey );
392+     arrayd .deleteMetadata (doubleKey );
338393    arrayd .close ();
339394
340395    // open a new session to check the deletion 
341396    Array  arraydn  = new  Array (ctx , arrayURI , TILEDB_READ );
342-     Assert .assertEquals (false , arraydn .hasMetadataKey (intKey ));
343-     Assert .assertEquals (false , arraydn .hasMetadataKey (floatKey ));
397+     Assert .assertFalse (arraydn .hasMetadataKey (byteKey ));
398+     Assert .assertFalse (arraydn .hasMetadataKey (shortKey ));
399+     Assert .assertFalse (arraydn .hasMetadataKey (intKey ));
400+     Assert .assertFalse (arraydn .hasMetadataKey (floatKey ));
401+     Assert .assertFalse (arraydn .hasMetadataKey (doubleKey ));
344402    Assert .assertEquals (0 , arraydn .getMetadataNum ().intValue ());
345403
346404    arraydn .close ();
0 commit comments