def test_get_dir_rel(self): rdir_helper = Rdir(self.fnames) rdir = rdir_helper.get_dir('/tmp/test_Rdir0.root:/dirc/dird/dire') if rdir.cd(): self.assertTrue(rdir_helper.get_dir('../../')) self.assertTrue(rdir_helper.get_dir('../../../')) else: self.fail(msg='Prep for Rdir.get_dir() with relative path failed')
def test_ls_names(self): rdir_helper = Rdir(self.fnames) keys_t = rdir_helper.ls_names('/tmp/test_Rdir0.root:/hist0') keys_r = [rdir_helper.files[0].GetKey('hist0').GetName()] self.assertListEqual(keys_r, keys_t) keys_t = rdir_helper.ls_names('/tmp/test_Rdir1.root') keys_r = [k.GetName() for k in rdir_helper.files[1].GetListOfKeys()] self.assertListEqual(keys_r, keys_t)
def test_get_dir_full(self): rdir_helper = Rdir(self.fnames) self.assertTrue(rdir_helper.get_dir('/tmp/test_Rdir1.root:/dira')) self.assertTrue(rdir_helper.get_dir('/tmp/test_Rdir1.root:')) self.assertTrue(rdir_helper.get_dir('/tmp/test_Rdir1.root')) # not a directory self.assertFalse( rdir_helper.get_dir('/tmp/test_Rdir1.root:/dira/hista')) # non-existent self.assertFalse(rdir_helper.get_dir('/tmp/test_Rdir1.root:/boohoo'))
def test_read(self): from functools import reduce rdir_helper = Rdir(self.fnames) objs_t = rdir_helper.read('/tmp/test_Rdir1.root') objs_r = [k.ReadObj() for k in rdir_helper.files[1].GetListOfKeys()] # self.assertListEqual(objs_r, objs_t) # doesn't work' res = map(lambda i, j: i.GetName() == j.GetName(), objs_t, objs_r) self.assertTrue(reduce(lambda i, j: i and j, res), msg='Keys do not match') objs_t = rdir_helper.read('/tmp/test_Rdir1.root', metainfo=True) res = map(lambda o: o.file == '/tmp/test_Rdir1.root', objs_t) self.assertTrue(reduce(lambda i, j: i and j, res))
def test_ls_full(self): from functools import reduce rdir_helper = Rdir(self.fnames) keys_t = rdir_helper.ls('/tmp/test_Rdir0.root:/dirb') keys_r = rdir_helper.files[0].GetDirectory('/dirb').GetListOfKeys() res = map(lambda i, j: i.GetName() == j.GetName(), keys_t, keys_r) self.assertTrue(reduce(lambda i, j: i and j, res), msg='Keys do not match') # FIXME: change files to see if any effects show up, need better test keys_t = rdir_helper.ls('/tmp/test_Rdir1.root') keys_r = rdir_helper.files[1].GetListOfKeys() res = map(lambda i, j: i.GetName() == j.GetName(), keys_t, keys_r) self.assertTrue(reduce(lambda i, j: i and j, res), msg='Keys do not match')
def test_ls_rel(self): from functools import reduce rdir_helper = Rdir(self.fnames) rdir = rdir_helper.get_dir('/tmp/test_Rdir0.root:/dirc/dird/dire') if rdir.cd(): keys_t = rdir_helper.ls('../../') keys_r = rdir.GetDirectory('../../').GetListOfKeys() res = map(lambda i, j: i.GetName() == j.GetName(), keys_t, keys_r) self.assertTrue(reduce(lambda i, j: i and j, res), msg='Keys do not match') keys_t = rdir_helper.ls('../../../') keys_r = rdir.GetDirectory('../../../').GetListOfKeys() res = map(lambda i, j: i.GetName() == j.GetName(), keys_t, keys_r) self.assertTrue(reduce(lambda i, j: i and j, res), msg='Keys do not match') else: self.fail(msg='Prep for Rdir.ls() with relative path failed')
def test_filter(self): rdir_helper = Rdir(self.fnames) keys_t = [ k for k in rdir_helper.ls('/tmp/test_Rdir0.root:', robj_t=ROOT.TDirectoryFile) ] keys_r = [ k for k in rdir_helper.files[0].GetListOfKeys() if ROOT.TClass.GetClass(k.GetClassName()).InheritsFrom( ROOT.TDirectoryFile.Class()) ] self.assertListEqual(keys_r, keys_t) keys_t = [ k for k in rdir_helper.ls( '/tmp/test_Rdir0.root:', robj_p=lambda k: k.GetName().find('hist') >= 0) ] keys_r = [ k for k in rdir_helper.files[0].GetListOfKeys() if k.GetName().find('hist') >= 0 ] self.assertListEqual(keys_r, keys_t)
def add_files(self, files): self.rdir_helper = Rdir(files)
def test_init(self): self.assertTrue(Rdir(self.fnames)) self.assertRaises(TypeError, Rdir, self.rfiles)