def test_h5py_datasets(): # this one stores and reloads all datasets in the warehouse rc_ds = saveload_warehouse() # global checks assert_equal(len(datasets), len(rc_ds)) assert_equal(sorted(datasets.keys()), sorted(rc_ds.keys())) # check each one for d in datasets: ds = datasets[d] ds2 = rc_ds[d] assert_array_equal(ds.samples, ds2.samples) # we can check all sa and fa attrs for attr in ds.sa: assert_array_equal(ds.sa[attr].value, ds2.sa[attr].value) for attr in ds.fa: assert_array_equal(ds.fa[attr].value, ds2.fa[attr].value) # with datasets attributes it is more difficult, but we'll do some assert_equal(len(ds.a), len(ds2.a)) assert_equal(sorted(ds.a.keys()), sorted(ds2.a.keys())) if 'mapper' in ds.a: # since we have no __equal__ do at least some comparison if __debug__: # debug mode needs special test as it enhances the repr output # with module info and id() appendix for objects assert_equal('#'.join(repr(ds.a.mapper).split('#')[:-1]), '#'.join(repr(ds2.a.mapper).split('#')[:-1])) else: assert_equal(repr(ds.a.mapper), repr(ds2.a.mapper))