def test_warnwritefortranarray(self): with tempdirfile() as filename1, tempdirfile() as filename2: dar = create_array(path=filename1, shape=(2, 4), fill=0, dtype='int64', overwrite=True) dar._datadir._update_jsondict(dar._arraydescrpath.absolute(), {'arrayorder': 'F'}) dar = Array(filename1) self.assertWarns(UserWarning, asarray, path=filename2, array=dar, overwrite=True)
def test_simplecopy1d(self): with tempdirfile() as filename1: dal1 = create_raggedarray(filename1, atom=(), dtype='float64') a = np.array([0, 1, 2, 3], dtype='float64') dal1.append(a) with tempdirfile() as filename2: dal2 = dal1.copy(path=filename2) assert_array_equal(dal1[0], dal2[0]) self.assertEqual(dal1.dtype, dal2.dtype)
def test_wrongtype(self): with tempdirfile() as filename: self.assertRaises(TypeError, write_jsonfile, path=filename, data=unittest, overwrite=True)
def test_donotdeletenondarrfile(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(0, 2), dtype='int64') dar._datadir._write_jsondict('test.json', {'a': 1}) testpath = dar._path.joinpath('test.json') self.assertRaises(OSError, delete_array, dar) self.assertEqual(testpath.exists(), True)
def test_consistencycorrect(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) self.assertIsNone(dar._check_arrayinfoconsistency()) dar.append([0,0]) self.assertIsNone(dar._check_arrayinfoconsistency())
def test_consistencyincorrectinfofileshape(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) dar._update_arrayinfo({'shape': (3,)}) self.assertRaises(ValueError, dar._check_arrayinfoconsistency) self.assertRaises(ValueError, Array, dar.path)
def test_readcodelanguages(self): with tempdirfile() as filename: ra = asraggedarray(path=filename, arrayiterable=[[0, 1], [2], [3, 4]], dtype='float64') self.assertIsInstance(ra.readcodelanguages, tuple) self.assertIn('numpymemmap', ra.readcodelanguages)
def test_acceptnumpyobjects(self): with tempdirfile() as filename: d1 = { 'a': np.int8(1), 'b': np.int16(1), 'c': np.int32(1), 'd': np.int64(1), 'e': np.float16(1), 'f': np.float32(1), 'g': np.float64(1), 'h': np.array([1, 2], np.int32), 'i': np.array([1, 2], np.int64), 'j': np.array([1, 2], np.float32), 'k': np.array([1, 2], np.float64), } write_jsonfile(path=filename, data=d1, overwrite=True) with open(filename, 'r') as fp: d2 = json.load(fp) for k in 'abcd': self.assertEqual(d2[k], 1) for k in 'efg': self.assertEqual(d2[k], 1.0) for k in 'hi': self.assertEqual(d2[k], [1, 2]) for k in 'jk': self.assertEqual(d2[k], [1., 2.])
def test_createwithmetadata(self): with tempdirfile() as filename: md = {'fs': 20000, 'x': 33.3} dal = create_raggedarray(filename, atom=(), dtype='float64', metadata=md) self.assertDictEqual(dict(dal.metadata), md)
def test_truncatebydirname(self): with tempdirfile() as filename: ra = asraggedarray(path=filename, arrayiterable=[[0, 1], [2], [3, 4]], dtype='int64') truncate_raggedarray(filename, 2) ra = RaggedArray(filename) self.assertEqual(len(ra), 2)
def test_truncatebydirname(self): with tempdirfile() as filename: a = np.array([0, 1, 2, 3, 4], dtype='int64') dar = asarray(path=filename, array=a, accessmode='r+') truncate_array(filename, 2) a = Array(filename) self.assertArrayIdentical(a[:], np.array([0, 1], dtype=a.dtype))
def test_truncatetolen0(self): with tempdirfile() as filename: a = asarray(path=filename, array=[0, 1, 2, 3, 4], dtype='int64', accessmode='r+') truncate_array(a, 0) self.assertEqual(len(a), 0) ra = Array(filename) self.assertEqual(len(a), 0)
def test_1darray(self): with tempdirfile() as filename: dal = create_raggedarray(filename, atom=(), dtype='float64', overwrite=True) dal.iterappend([[0., 1., 2.], [3., 4.], [5.]]) self.assertEqual(len(dal), 3)
def test_allowfortranorder(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,4), fill=0, dtype='int64', overwrite=True) dar._datadir._update_jsondict(dar._arraydescrpath.absolute(), {'arrayorder': 'F'}) dar = Array(filename) self.assertIn("Column-major", numtypedescriptiontxt(dar))
def test_1darray(self): with tempdirfile() as filename: na = [[1, 2, 3], [4, 5, 6]] md = {'fs': 20000, 'x': 33.3} dal = asraggedarray(filename, na, metadata=md) assert_array_equal(dal[0], na[0]) assert_array_equal(dal[1], na[1]) self.assertDictEqual(dict(dal.metadata), md)
def test_arrayinfowrongshapetype(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) arrayinfo = dar._arrayinfo.copy() arrayinfo['shape'] = ['a', 3] dar._datadir._write_jsondict(dar._arraydescrfilename, arrayinfo, overwrite=True) self.assertRaises(TypeError, Array, dar.path)
def test_consistencywronginfofileitemsize(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) arrayinfo = dar._arrayinfo.copy() arrayinfo['numtype'] = 'int32' dar._datadir._write_jsondict(dar._arraydescrfilename, arrayinfo, overwrite=True) self.assertRaises(ValueError, dar._check_arrayinfoconsistency) self.assertRaises(ValueError, Array, dar.path)
def test_setmetadatawhenpresent(self): with tempdirfile() as filename: md = {'fs': 20000, 'x': 33.3} dal = create_raggedarray(filename, atom=(), dtype='float64', metadata=md) md['fs'] = 3000 dal.metadata.update(md) self.assertDictEqual(dict(dal.metadata), md)
def test_2darray(self): with tempdirfile() as filename: dal = create_raggedarray(filename, atom=(2, ), dtype='float64') self.assertEqual(len(dal), 0) self.assertEqual(dal.atom, (2, )) self.assertEqual(dal.dtype, np.float64) a = np.array([[0, 1], [2, 3], [4, 5]], dtype='float64') dal.append(a) self.assertEqual(len(dal), 1) assert_equal(dal[0], a)
def test_arrayinfonewerversionfile(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) arrayinfo = dar._arrayinfo.copy() vs = f"1{arrayinfo['darrversion']}" arrayinfo['darrversion'] = vs dar._datadir._write_jsondict(dar._arraydescrfilename, arrayinfo, overwrite=True) self.assertWarns(UserWarning, Array, dar.path)
def check_arrayequaltocreatearray(self, ndarray, shape, dtype=None, chunklen=None): with tempdirfile() as filename: dar = create_array(path=filename, shape=shape, dtype=dtype, chunklen=chunklen, overwrite=True) if dtype is not None: ndarray = ndarray.astype(dtype) self.assertArrayIdentical(ndarray, dar[:]) self.assertEqual(shape, dar.shape)
def test_overwriteremoveexistingmetadata(self): with tempdirfile() as filename: metadata = {'a': 1} dal1 = create_raggedarray(filename, atom=(), dtype='float64', metadata=metadata) dal2 = create_raggedarray(filename, atom=(), dtype='float64', overwrite=True) self.assertEqual(0, len(dal2.metadata)) self.assertEqual(False, dal2.metadata.path.exists())
def test_arrayinfowrongorder(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) arrayinfo = dar._arrayinfo.copy() arrayinfo['arrayorder'] = 'D' dar._datadir._write_jsondict(dar._arraydescrfilename, arrayinfo, overwrite=True) self.assertRaises(ValueError, Array, dar.path) arrayinfo['arrayorder'] = '[D]' dar._datadir._write_jsondict(dar._arraydescrfilename, arrayinfo, overwrite=True) self.assertRaises(Exception, Array, dar.path)
def test_setaccessmode(self): with tempdirfile() as filename: dal = create_raggedarray(filename, atom=(), dtype='float64') self.assertEqual(dal.accessmode, 'r+') self.assertEqual(dal._metadata.accessmode, 'r+') self.assertEqual(dal._values.accessmode, 'r+') self.assertEqual(dal._indices.accessmode, 'r+') dal.accessmode = 'r' self.assertEqual(dal.accessmode, 'r') self.assertEqual(dal._metadata.accessmode, 'r') self.assertEqual(dal._values.accessmode, 'r') self.assertEqual(dal._indices.accessmode, 'r') self.assertRaises(ValueError, setattr, dal, 'accessmode', 'w') self.assertRaises(ValueError, setattr, dal, 'accessmode', 'a')
def test_donotdeletenondarrdir(self): with tempdirfile() as filename: bd = create_datadir(filename, overwrite=True) self.assertRaises(TypeError, delete_array, filename) bd._write_jsondict('test.json', {'a': 1}) self.assertRaises(TypeError, delete_array, filename)
def test_simpledeletearraypath(self): with tempdirfile() as filename: _ = create_array(path=filename, shape=(0, 2), dtype='int64') delete_array(filename) self.assertEqual(len(os.listdir(filename.parent)), 0)
def test_check_arraywriteable(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', accessmode='r+', overwrite=True) self.assertIsNone(dar.check_arraywriteable())
def test_truncateindextoohigh(self): with tempdirfile() as filename: a = np.array([0, 1, 2, 3, 4], dtype='int64') dar = asarray(path=filename, array=a, overwrite=True, accessmode='r+') self.assertRaises(IndexError, truncate_array, dar, 10)
def test_truncateinvalidindextype(self): with tempdirfile() as filename: a = np.array([0, 1, 2, 3, 4], dtype='int64') dar = asarray(path=filename, array=a, accessmode='r+') self.assertRaises(TypeError, truncate_array, dar, 'a')
def test_check_arraynotwriteable(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', accessmode='r', overwrite=True) self.assertRaises(OSError, dar.check_arraywriteable)