[h5py] 307/455: Reconfigure tests

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Thu Jul 2 18:19:45 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag 1.3.0
in repository h5py.

commit aaa5efba141173f92279d368c059caaac95faf1a
Author: andrewcollette <andrew.collette at gmail.com>
Date:   Fri Aug 14 22:16:48 2009 +0000

    Reconfigure tests
---
 h5py/tests/__init__.py       |   1 +
 h5py/tests/test_group.py     | 315 +++++++++++++++++++++++++++++++++++++++++++
 h5py/tests/test_highlevel.py | 221 ------------------------------
 3 files changed, 316 insertions(+), 221 deletions(-)

diff --git a/h5py/tests/__init__.py b/h5py/tests/__init__.py
index e0290bd..1d1b532 100644
--- a/h5py/tests/__init__.py
+++ b/h5py/tests/__init__.py
@@ -16,6 +16,7 @@ import common
 
 mnames = [
 'test_dataset',
+'test_group',
 'test_filters',
 'test_h5a',
 'test_h5d',
diff --git a/h5py/tests/test_group.py b/h5py/tests/test_group.py
new file mode 100644
index 0000000..75143ca
--- /dev/null
+++ b/h5py/tests/test_group.py
@@ -0,0 +1,315 @@
+
+"""
+    Test highlevel Group object behavior
+"""
+import numpy as np
+
+import h5py
+from common import TestCasePlus, api_16, api_18, res
+
+SHAPES = [(), (1,), (10,5), (1,10), (10,1), (100,1,100), (51,2,1025)]
+
+class GroupBase(TestCasePlus):
+
+    """
+        Base class to handle Group setup/teardown, and some shared logic.
+    """
+
+    def setUp(self):
+        self.f = h5py.File(res.get_name(), 'w')
+
+    def tearDown(self):
+        res.clear()
+
+    def assert_equal_contents(self, a, b):
+        """ Check if two iterables contain the same elements, regardless of
+            order.
+        """
+        self.assertEqual(set(a), set(b))
+        self.assertEqual(len(a), len(b))
+
+class TestInit(GroupBase):
+
+    """ Group creation """
+
+    def test_Group_init(self):
+        """ Group constructor """
+
+        grp = h5py.Group(self.f, "NewGroup", create=True)
+        self.assert_("NewGroup" in self.f)
+        grp2 = h5py.Group(self.f, "NewGroup")
+
+        self.assertEqual(grp.name, "/NewGroup")
+
+    def test_Group_create_group(self):
+
+        grp = self.f.create_group("NewGroup")
+        self.assert_("NewGroup" in self.f)
+        self.assertRaises(ValueError, self.f.create_group, "NewGroup")
+
+    def test_Group_create_dataset(self):
+
+        ds = self.f.create_dataset("Dataset", shape=(10,10), dtype='<i4')
+        self.assert_(isinstance(ds, h5py.Dataset))
+        self.assert_("Dataset" in self.f)
+
+class TestSpecial(GroupBase):
+
+    """ Special methods """
+
+    subgroups = ["Name1", " Name 1231987&*@&^*&#W  2  \t\t ",
+                 "name3", "14", "!"]
+
+    def setUp(self):
+        GroupBase.setUp(self)
+        for name in self.subgroups:
+            self.f.create_group(name)
+
+    def test_len(self):
+        self.assertEqual(len(self.f), len(self.subgroups))
+
+    def test_contains(self):
+        for name in self.subgroups:
+            self.assert_(name in self.f)
+        self.assert_("missing" not in self.f)
+
+    def test_iter(self):
+        self.assert_equal_contents(self.f, self.subgroups)
+
+    def test_dictcompat(self):
+
+        # Old style
+        self.assert_equal_contents(self.f.listnames(), self.subgroups)
+        self.assert_equal_contents(self.f.listobjects(), [self.f[x] for x in self.subgroups])
+        self.assert_equal_contents(self.f.listitems(), [(x, self.f[x]) for x in self.subgroups])
+
+        # New style
+        self.assert_equal_contents(self.f.keys(), self.subgroups)
+        self.assert_equal_contents(self.f.values(), [self.f[x] for x in self.subgroups])
+        self.assert_equal_contents(self.f.items(), [(x, self.f[x]) for x in self.subgroups])
+
+        # Shared
+        self.assert_equal_contents(list(self.f.iternames()), self.subgroups)
+        self.assert_equal_contents(list(self.f.iterobjects()), [self.f[x] for x in self.subgroups])
+        self.assert_equal_contents(list(self.f.iteritems()), [(x, self.f[x]) for x in self.subgroups])
+
+
+    def test_del(self):
+        names = list(self.subgroups)
+        for name in self.subgroups:
+            names.remove(name)
+            del self.f[name]
+            self.assert_equal_contents(self.f, names)
+
+    def test_str_repr(self):
+        g = self.f.create_group("Foobar")
+        s = str(g)
+        r = repr(g)
+        self.assert_(isinstance(s, str),s)
+        self.assert_(isinstance(r, str),r)
+        self.assert_(r.startswith('<') and r.endswith('>'),r)
+
+class TestSetItem(GroupBase):
+
+    """ Behavior of Group.__setitem__ """
+
+    def test_ndarray(self):
+        """ Assignment of an ndarray to a Group object """
+
+        shapes = [(), (1,), (10,10)]
+        types = ['i', 'f']#, [('a','i'), ('b','f')]]
+        types = [np.dtype(t) for t in types]
+
+        for shape in shapes:
+            for dt in types:
+                msg = "Assign ndarray %s %s" % (dt, shape)
+
+                arr = np.ones(shape, dtype=dt)
+                self.f['DS'] = arr
+                dset = self.f['DS']
+                self.assertEqual(dset.shape, arr.shape)
+                self.assertEqual(dset.dtype, arr.dtype)
+
+                self.assertArrayEqual(dset[()], arr[()], msg)
+
+                del self.f['DS']
+
+    def test_dtype(self):
+        """ Assignment of a dtype to a Group object """
+
+        types = ['i', 'f', [('a','i'), ('b','f')]]
+        types = [np.dtype(t) for t in types]
+
+        for dt in types:
+            msg = "Assign dtype %s" % (dt,)
+
+            self.f['TYPE'] = dt
+            htype = self.f['TYPE']
+            self.assert_(isinstance(htype, h5py.Datatype), msg)
+            self.assertEqual(htype.dtype, dt)
+            
+            del self.f['TYPE']
+
+    def test_hardlink(self):
+        """ Hard-linking by direct assignment to Group """
+
+        grp1 = self.f.create_group('grp1')
+        self.f['grp2'] = grp1
+        grp2 = self.f['grp2']
+
+        self.assert_(grp1 is not grp2)
+        self.assert_(grp1 == grp2)
+        self.assert_(hash(grp1) == hash(grp2))
+
+    def test_array_autocreate(self):
+        """ Auto-creation of dataset from sequence """
+
+        seq = [1,-42,2,3,4,5,10]
+        arr = np.array(seq)
+
+        self.f['DS'] = seq
+        self.assert_(np.all(self.f['DS'][...] == arr))
+
+        # test scalar -> 0-d dataset
+        self.f["DS_SC"] = 42
+        harr = self.f["DS_SC"]
+        self.assert_(isinstance(harr, Dataset))
+        self.assertEqual(harr.shape, ())
+        self.assertEqual(harr.value, 42)
+    
+        # test assignment of out-of-order arrays
+        arr = np.array(numpy.arange(100).reshape((10,10)), order='F')
+        self.f['FORTRAN'] = arr
+        dset = self.f['FORTRAN']
+        self.assert_(np.all(dset[:] == arr))
+        self.assert_(dset[:].flags['C_CONTIGUOUS'])
+
+    def test_exceptions(self):
+        """ Exceptions from __setitem__ """
+
+        self.f.create_group('grp')
+        self.assertRaises(ValueError, self.f.create_group, 'grp')
+
+def TestGetItem(GroupBase):
+
+    def test_get(self):
+
+        grp = self.f.create_group("grp")
+        dset = self.f.create_dataset("ds", (1,), 'f')
+        dtype = np.dtype('f')
+        self.f['type'] = dtype
+        htype = self.f['type']
+
+        self.assert_(isinstance(self.f['grp'], h5py.Group))
+        self.assert_(self.f['grp'] == grp)
+
+        self.assert_(isinstance(self.f['ds'], h5py.Dataset))
+        self.assert_(self.f['ds'] == dset)
+
+        self.assert_(isinstance(self.f['type'], h5py.Datatype))
+        self.assert_(self.f['type'].dtype == dtype)
+
+    def test_exceptions(self):
+
+        self.assertRaises(TypeError, self.f,__getitem__, 42)
+        self.assertRaises(KeyError, self.f.__getitem__, 'missing')
+
+## -----
+
+from h5py import Group, Dataset, Datatype, File
+import numpy
+
+class TestOther(GroupBase):
+
+    def test_require(self):
+
+        grp = self.f.require_group('foo')
+        self.assert_(isinstance(grp, Group))
+        self.assert_('foo' in self.f)
+
+        grp2 = self.f.require_group('foo')
+        self.assert_(grp == grp2)
+        self.assert_(hash(grp) == hash(grp2))
+
+        dset = self.f.require_dataset('bar', (10,10), '<i4')
+        self.assert_(isinstance(dset, Dataset))
+        self.assert_('bar' in self.f)
+
+        dset2 = self.f.require_dataset('bar', (10,10), '<i4')
+        self.assert_(dset == dset2)
+        self.assert_(hash(dset) == hash(dset2))
+
+        self.assertRaises(TypeError, self.f.require_group, 'bar')
+        self.assertRaises(TypeError, self.f.require_dataset, 'foo', (10,10), '<i4')
+
+        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,11), '<i4')
+        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,10), '<c8')
+        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,10), '<i1', exact=True)
+
+        self.f.require_dataset('bar', (10,10), '<i1')
+
+    @api_16
+    def test_copy_16(self):
+
+        self.f.create_group('foo')
+        self.assertRaises(NotImplementedError, self.f.copy, 'foo', 'bar')
+
+    @api_18
+    def test_copy_18(self):
+
+        self.f.create_group('foo')
+        self.f.create_group('foo/bar')
+
+        self.f.copy('foo', 'new')
+        self.assert_('new' in self.f)
+        self.assert_('new/bar' in self.f)
+
+    @api_16
+    def test_visit_16(self):
+
+        for x in ['grp1','grp2']:
+            self.f.create_group(x)
+
+        grplist = []
+        self.assertRaises(NotImplementedError, self.f.visit, grplist.append)
+
+        self.assertRaises(NotImplementedError, self.f.visititems, lambda x,y: grplist.append((x,y)))
+
+    @api_18
+    def test_visit_18(self):
+
+        groups = ['grp1', 'grp1/sg1', 'grp1/sg2', 'grp2', 'grp2/sg1', 'grp2/sg1/ssg1']
+
+        for x in groups:
+            self.f.create_group(x)
+
+        group_visit = []
+        self.f.visit(group_visit.append)
+
+        self.assert_equal_contents(groups, group_visit)
+
+        grp_items = [(x, self.f[x]) for x in groups]
+
+        group_visit = []
+        self.f.visititems(lambda x, y: group_visit.append((x,y)))
+        
+        self.assert_equal_contents(grp_items, group_visit)
+
+        # Test short-circuit return
+
+        group_visit = []
+        def visitor(name, obj=None):
+            group_visit.append(name)
+            if name.find('grp2/sg1') >= 0:
+                return name
+            return None
+
+        result = self.f.visit(visitor)
+        self.assert_(result.find('grp2/sg1') >= 0)
+        self.assert_(not any(x.find('grp2/sg1/ssg1') >= 0 for x in group_visit))
+
+        del group_visit[:]
+
+        result = self.f.visititems(visitor)
+        self.assert_(result.find('grp2/sg1') >= 0)
+        self.assert_(not any(x.find('grp2/sg1/ssg1') >= 0 for x in group_visit))
diff --git a/h5py/tests/test_highlevel.py b/h5py/tests/test_highlevel.py
index 911fcfe..bc2ddcb 100644
--- a/h5py/tests/test_highlevel.py
+++ b/h5py/tests/test_highlevel.py
@@ -459,228 +459,7 @@ class TestExceptions(TestCasePlus):
                 pass
             os.unlink(fname)
 
-class TestGroup(TestCasePlus):
 
-    def setUp(self):
-        self.f = File(res.get_name(), 'w')
-
-    def tearDown(self):
-        res.clear()
-
-    def assert_equal_contents(self, a, b):
-        self.assertEqual(set(a), set(b))
-
-    def test_Group_init(self):
-        
-        grp = Group(self.f, "NewGroup", create=True)
-        self.assert_("NewGroup" in self.f)
-        grp2 = Group(self.f, "NewGroup")
-
-        self.assertEqual(grp.name, "/NewGroup")
-
-    def test_Group_create_group(self):
-
-        grp = self.f.create_group("NewGroup")
-        self.assert_("NewGroup" in self.f)
-        self.assertRaises(ValueError, self.f.create_group, "NewGroup")
-
-    def test_Group_create_dataset(self):
-
-        ds = self.f.create_dataset("Dataset", shape=(10,10), dtype='<i4')
-        self.assert_(isinstance(ds, Dataset))
-        self.assert_("Dataset" in self.f)
-
-    def test_Group_special(self):
-
-        subgroups = ["Name1", " Name 1231987&*@&^*&#W  2  \t\t ", "name3",
-                     "14", "!"]
-
-        for name in subgroups:
-            self.f.create_group(name)
-
-        # __len__
-        self.assertEqual(len(self.f), len(subgroups))
-    
-        # __contains__
-        for name in subgroups:
-            self.assert_(name in self.f)
-
-        # __iter__
-        self.assert_equal_contents(list(self.f), subgroups)
-
-        # Dictionary compatibility methods
-        self.assert_equal_contents(self.f.listnames(), subgroups)
-        self.assert_equal_contents(list(self.f.iternames()), subgroups)
-
-        self.assert_equal_contents(self.f.listobjects(), [self.f[x] for x in subgroups])
-        self.assert_equal_contents(list(self.f.iterobjects()), [self.f[x] for x in subgroups])
-
-        self.assert_equal_contents(self.f.listitems(), [(x, self.f[x]) for x in subgroups])
-        self.assert_equal_contents(list(self.f.iteritems()), [(x, self.f[x]) for x in subgroups])
-
-        # __delitem__
-        for name in subgroups:
-            self.assert_(name in self.f)
-            del self.f[name]
-            self.assert_(not name in self.f)
-
-        self.assertEqual(len(self.f), 0)
-
-        # __str__
-        grp = self.f.create_group("Foobar")
-        str(grp)
-        repr(grp)
-        grp.id._close()
-        str(grp)
-        repr(grp)
-
-    def test_Group_setgetitem(self):
-        # Also tests named types
-
-        for shape in SHAPES:
-            for dt in TYPES1:
-
-                msg = "Assign %s %s" % (dt, shape)
-
-                # test arbitrary datasets
-                dt_obj = numpy.dtype(dt)       
-                arr = numpy.ones(shape, dtype=dt_obj)
-                self.f["DS"] = arr
-                harr = self.f["DS"]
-                self.assert_(isinstance(harr, Dataset), msg)
-                self.assertEqual(harr.shape, shape, msg)
-                self.assertEqual(harr.dtype, dt_obj, msg)
-                self.assertArrayEqual(harr.value, arr[()], msg)
-
-                # test named types
-                self.f["TYPE"] = dt_obj
-                htype = self.f["TYPE"]
-                self.assert_(isinstance(htype, Datatype), msg)
-                self.assertEqual(htype.dtype, dt_obj, msg)
-
-                del self.f["DS"]
-                del self.f["TYPE"]
-
-        # Test creation of array from sequence
-        seq = [1,-42,2,3,4,5,10]
-        self.f["DS"] = seq
-        harr = self.f["DS"]
-        self.assert_(numpy.all(harr.value == numpy.array(seq)))
-        del self.f["DS"]
-
-        # test scalar -> 0-d dataset
-        self.f["DS"] = 42
-        harr = self.f["DS"]
-        self.assert_(isinstance(harr, Dataset))
-        self.assertEqual(harr.shape, ())
-        self.assertEqual(harr.value, 42)
-    
-        # test hard linking
-        self.f["DS1"] = self.f["DS"]
-        info1 = h5g.get_objinfo(self.f.id,"DS")
-        info2 = h5g.get_objinfo(self.f.id,"DS1")
-        self.assertEqual(info1.fileno, info2.fileno)
-        self.assertEqual(info1.objno, info2.objno)
-
-        # test assignment of out-of-order arrays
-        arr = numpy.array(numpy.arange(100).reshape((10,10)), order='F')
-        self.f['FORTRAN'] = arr
-        dset = self.f['FORTRAN']
-        self.assert_(numpy.all(dset[:] == arr))
-        self.assert_(dset[:].flags['C_CONTIGUOUS'])
-
-    def test_require(self):
-
-        grp = self.f.require_group('foo')
-        self.assert_(isinstance(grp, Group))
-        self.assert_('foo' in self.f)
-
-        grp2 = self.f.require_group('foo')
-        self.assert_(grp == grp2)
-        self.assert_(hash(grp) == hash(grp2))
-
-        dset = self.f.require_dataset('bar', (10,10), '<i4')
-        self.assert_(isinstance(dset, Dataset))
-        self.assert_('bar' in self.f)
-
-        dset2 = self.f.require_dataset('bar', (10,10), '<i4')
-        self.assert_(dset == dset2)
-        self.assert_(hash(dset) == hash(dset2))
-
-        self.assertRaises(TypeError, self.f.require_group, 'bar')
-        self.assertRaises(TypeError, self.f.require_dataset, 'foo', (10,10), '<i4')
-
-        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,11), '<i4')
-        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,10), '<c8')
-        self.assertRaises(TypeError, self.f.require_dataset, 'bar', (10,10), '<i1', exact=True)
-
-        self.f.require_dataset('bar', (10,10), '<i1')
-
-    @api_16
-    def test_copy_16(self):
-
-        self.f.create_group('foo')
-        self.assertRaises(NotImplementedError, self.f.copy, 'foo', 'bar')
-
-    @api_18
-    def test_copy_18(self):
-
-        self.f.create_group('foo')
-        self.f.create_group('foo/bar')
-
-        self.f.copy('foo', 'new')
-        self.assert_('new' in self.f)
-        self.assert_('new/bar' in self.f)
-
-    @api_16
-    def test_visit_16(self):
-
-        for x in ['grp1','grp2']:
-            self.f.create_group(x)
-
-        grplist = []
-        self.assertRaises(NotImplementedError, self.f.visit, grplist.append)
-
-        self.assertRaises(NotImplementedError, self.f.visititems, lambda x,y: grplist.append((x,y)))
-
-    @api_18
-    def test_visit_18(self):
-
-        groups = ['grp1', 'grp1/sg1', 'grp1/sg2', 'grp2', 'grp2/sg1', 'grp2/sg1/ssg1']
-
-        for x in groups:
-            self.f.create_group(x)
-
-        group_visit = []
-        self.f.visit(group_visit.append)
-
-        self.assert_equal_contents(groups, group_visit)
-
-        grp_items = [(x, self.f[x]) for x in groups]
-
-        group_visit = []
-        self.f.visititems(lambda x, y: group_visit.append((x,y)))
-        
-        self.assert_equal_contents(grp_items, group_visit)
-
-        # Test short-circuit return
-
-        group_visit = []
-        def visitor(name, obj=None):
-            group_visit.append(name)
-            if name.find('grp2/sg1') >= 0:
-                return name
-            return None
-
-        result = self.f.visit(visitor)
-        self.assert_(result.find('grp2/sg1') >= 0)
-        self.assert_(not any(x.find('grp2/sg1/ssg1') >= 0 for x in group_visit))
-
-        del group_visit[:]
-
-        result = self.f.visititems(visitor)
-        self.assert_(result.find('grp2/sg1') >= 0)
-        self.assert_(not any(x.find('grp2/sg1/ssg1') >= 0 for x in group_visit))
 
 
 class TestTypes(TestCasePlus):

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/h5py.git



More information about the debian-science-commits mailing list