def setUp(self): self.tempearpath = tempfile.mkdtemp() # even array self.tempoarpath = tempfile.mkdtemp() # odd array self.tempnonarpath = tempfile.mkdtemp() self.tempear = create_array(path=self.tempearpath, shape=(12,), dtype='int64', metadata={'a': 1}, overwrite=True) self.tempoar = create_array(path=self.tempoarpath, shape=(13,), dtype='int64', metadata={'a': 1}, overwrite=True)
def test_appendlist2d(self): dar = create_array(path=self.temparpath, shape=(2, 3), dtype='int64', overwrite=True) dar.append([[1,2,3]]) dar.append([[1,2,3],[4,5,6]]) self.assertArrayIdentical(np.array([[0, 0, 0], [0, 0, 0], [1, 2, 3], [1, 2, 3], [4, 5, 6]], dtype='int64'), dar[:])
def test_appendtoempty2d(self): dar = create_array(path=self.temparpath, shape=(0, 2), dtype='int64', overwrite=True) dar.append([[1,2]]) dar.append([[1,2],[3,4]]) self.assertArrayIdentical(np.array([[1, 2], [1, 2], [3, 4]], dtype='int64'), dar[:])
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_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_unknownarrayordertype(self): with tempdir() as dirname: dar = create_array(path=dirname, shape=(2,4), fill=0, dtype='int64', overwrite=True) dar._update_arrayinfo({'arrayorder': 'X'}) self.assertRaises(ValueError, numtypedescriptiontxt, dar) self.assertRaises(ValueError, Array, dirname)
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_openfile(self): with tempdir() as dirname: dar = create_array(path=dirname, shape=(0, 2), dtype='int64', overwrite=True, accessmode='r+') with dar._datadir.open_file('notes.txt', 'a') as f: f.write('test\n') path = dar.path / 'notes.txt' self.assertEqual(path.exists(), True)
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_openfileprotectedfiles(self): with tempdir() as dirname: dar = create_array(path=dirname, shape=(0, 2), dtype='int64', overwrite=True, accessmode='r+') for fn in dar._protectedfiles: with self.assertRaises(OSError): with dar._datadir.open_file(fn, 'a') as f: f.write('test\n')
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_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_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_appenddataerror(self): def testiter(): yield [1, 2, 3] yield [4, 5, 6] raise ValueError g = (f for f in testiter()) dar = create_array(path=self.temparpath, shape=(2,), dtype='int64', overwrite=True) self.assertRaises(AppendDataError, dar.iterappend, g) self.assertArrayIdentical(dar[:], np.array([0, 0, 1, 2, 3, 4, 5, 6], dtype='int64'))
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_appendnumber(self): dar = create_array(path=self.temparpath, shape=(2,), dtype='int64', overwrite=True) dar.append(1) self.assertArrayIdentical(np.array([0, 0, 1], dtype='int64'), dar[:])
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_consistencywronginfoitemsize(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) dar._update_arrayinfo({'numtype': 'int32'}) self.assertRaises(ValueError, dar._check_arrayinfoconsistency)
def setUp(self): self.temparpath = tempfile.mkdtemp() self.tempar = create_array(path=self.temparpath, shape=(10,), dtype='int64', overwrite=True)
def test_iterappendnoniterable(self): dar = create_array(path=self.temparpath, shape=(2,), dtype='int64', overwrite=True) ar = 3 self.assertRaises(TypeError, dar.iterappend, ar)
def test_appendreadonlyarray(self): dar = create_array(path=self.temparpath, shape=(2,), dtype='int64', overwrite=True, accessmode='r') ar = [3, 4] self.assertRaises(OSError, dar.append, ar)
def test_appendwrongshape(self): dar = create_array(path=self.temparpath, shape=(2,3), dtype='int64', overwrite=True) ar = [[3,4]] self.assertRaises(AppendDataError, dar.append, ar)
def test_appendemptytoempty2d(self): dar = create_array(path=self.temparpath, shape=(0, 2), dtype='int64', overwrite=True) dar.append(np.zeros((0, 2), dtype='int64')) self.assertArrayIdentical(np.zeros((0, 2), dtype='int64'), dar[:])
def test_appendempty1d(self): dar = create_array(path=self.temparpath, shape=(1,), dtype='int64', overwrite=True) dar.append([]) self.assertArrayIdentical(np.array([0], dtype='int64'), dar[:])
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_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)
def test_appendlist1d(self): dar = create_array(path=self.temparpath, shape=(2,), dtype='int64', overwrite=True) dar.append([1,2]) dar.append([3]) self.assertArrayIdentical(np.array([0, 0, 1, 2, 3], dtype='int64'), dar[:])
def test_arrayinfomissingfile(self): with tempdirfile() as filename: dar = create_array(path=filename, shape=(2,), fill=0, dtype='int64', overwrite=True) dar._arraydescrpath.unlink() self.assertRaises(FileNotFoundError, Array, dar.path)