Source code for crikit.io.lazy5.tests.test_create

""" Test creation of HDF5 files """
import os
import time

import pytest

import numpy as np
import h5py

from crikit.io.lazy5.create import save
from crikit.io.lazy5.utils import FidOrFile


[docs]def test_save_no_attrs(): data = np.random.randn(20,20) filename = 'temp_create.h5' dset_name = '/Group1/Dset' save(filename, dset_name, data, mode='w') fof = FidOrFile(filename) fid = fof.fid assert np.allclose(fid[dset_name], data) fof.close_if_file_not_fid() # Test re-write data = np.random.randn(20,20) save(filename, dset_name, data, mode='w') fof = FidOrFile(filename) fid = fof.fid assert np.allclose(fid[dset_name], data) fof.close_if_file_not_fid() # Test re-write when overwrite of dset set to False data = np.random.randn(20,20) with pytest.raises(IOError): save(filename, dset_name, data, dset_overwrite=False) # Test re-write with attributes data = np.random.randn(20,20) attr_dict = {'AT1':1, 'AT2':2} save(filename, dset_name, data, attr_dict=attr_dict, mode='w') fof = FidOrFile(filename) fid = fof.fid assert fid[dset_name].attrs['AT1'] == 1 assert fid[dset_name].attrs['AT2'] == 2 with pytest.raises(KeyError): fid[dset_name].attrs['DOESNOTEXIST'] == 2 fof.close_if_file_not_fid() time.sleep(1) try: os.remove(filename) except Exception: print('Could not delete {}'.format(filename))
[docs]def test_save_diff_path(): data = np.random.randn(20,20) filename = 'temp_create2.h5' dset_name = '/Group1/Dset' pth = './temp_test' os.mkdir(pth) save(filename, dset_name, data, pth=pth, mode='w') fp = os.path.join(pth, filename) assert os.path.isdir(pth) assert os.path.isfile(fp) assert os.path.getsize(fp) >= data.nbytes os.remove(fp) os.rmdir(pth)
[docs]def test_save_to_open_h5_file(): """ Test saving to an H5 file where the H5 file id is passed """ data = np.random.randn(20,20) filename = 'temp_create2.h5' dset_name = '/Group1/Dset' pth = './temp_test' os.mkdir(pth) assert os.path.isdir(pth) fp = os.path.join(pth, filename) with h5py.File(fp, 'w') as fid: save(fid, dset_name, data, pth=pth, mode='w') assert os.path.isfile(fp) assert os.path.getsize(fp) >= data.nbytes os.remove(fp) os.rmdir(pth)
[docs]def test_save_to_open_wrong_type(): """ Test saving to an inappripriate input (not string or h5 file fid) """ with pytest.raises(TypeError): save(123, 'Name', np.random.rand(10,10), pth=None, mode='w')