From 52c6bb833277be8f66a562651198c2086480505c Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Thu, 15 Sep 2016 16:36:53 +0200
Subject: [PATCH] Write test to ensure the HDF5 backend supports non-contiguous
 array writing (c.f. issue #6)

---
 bob/io/base/test_hdf5.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/bob/io/base/test_hdf5.py b/bob/io/base/test_hdf5.py
index 376e265..6751504 100644
--- a/bob/io/base/test_hdf5.py
+++ b/bob/io/base/test_hdf5.py
@@ -60,6 +60,18 @@ def read_write_array_check(outfile, dtype):
     arrays.append(nparray)
   read_write_check(outfile, dtype.__name__ + '_array', arrays)
 
+def read_write_subarray_check(outfile, dtype):
+  N = 10
+  SHAPE = (2, 3, 4, 2) #48 elements in arrays
+  arrays = []
+  for k in range(N):
+    data = [random.uniform(0,N) for z in range(numpy.product(SHAPE))]
+    nparray = numpy.array(data, dtype=dtype).reshape(SHAPE)
+    usearray = nparray[:,1,1:2,:]
+    assert not usearray.flags.contiguous
+    arrays.append(usearray)
+  read_write_check(outfile, dtype.__name__ + '_subarray', arrays)
+
 def test_can_create():
 
   # This test demonstrates how to create HDF5 files from scratch,
@@ -190,6 +202,21 @@ def test_type_support():
     read_write_array_check(outfile, numpy.complex128)
     #read_write_array_check(outfile, numpy.complex256) #no numpy conversion
 
+    read_write_subarray_check(outfile, numpy.int8)
+    read_write_subarray_check(outfile, numpy.int16)
+    read_write_subarray_check(outfile, numpy.int32)
+    read_write_subarray_check(outfile, numpy.int64)
+    read_write_subarray_check(outfile, numpy.uint8)
+    read_write_subarray_check(outfile, numpy.uint16)
+    read_write_subarray_check(outfile, numpy.uint32)
+    read_write_subarray_check(outfile, numpy.uint64)
+    read_write_subarray_check(outfile, numpy.float32)
+    read_write_subarray_check(outfile, numpy.float64)
+    #read_write_subarray_check(outfile, numpy.float128) #no numpy conversion
+    read_write_subarray_check(outfile, numpy.complex64)
+    read_write_subarray_check(outfile, numpy.complex128)
+    #read_write_subarray_check(outfile, numpy.complex256) #no numpy conversion
+
   finally:
     os.unlink(tmpname)
 
-- 
GitLab