[h5py] 312/455: Update 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 60d94492de6a60a5a5643cf49b1888650ffba028
Author: andrewcollette <andrew.collette at gmail.com>
Date:   Wed Sep 30 02:43:27 2009 +0000

    Update tests
---
 h5py/tests/test_h5t.py | 199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 199 insertions(+)

diff --git a/h5py/tests/test_h5t.py b/h5py/tests/test_h5t.py
index e498541..268ca95 100644
--- a/h5py/tests/test_h5t.py
+++ b/h5py/tests/test_h5t.py
@@ -285,5 +285,204 @@ class TestH5T(TestCasePlus):
         finally:
             config.complex_names = oldnames
 
+import h5py
+cfg = h5py.get_config()
+bytemap = {'<': h5t.ORDER_LE, '>': h5t.ORDER_BE, '=': h5t.ORDER_NATIVE}
+
+class TestPyCreate(TestCasePlus):
+
+    """
+        Tests the translation from Python dtypes to HDF5 datatypes
+    """
+
+    def test_integer(self):
+        """ Signed integer translation
+
+        - TypeIntegerID
+        - 1, 2, 4, 8 bytes
+        - LE and BE
+        - Signed
+        """
+        bases = ('=i', '<i', '>i')
+
+        for b in bases:
+            for l in (1, 2, 4, 8):
+                dt = '%s%s' % (b, l)
+                htype = h5t.py_create(dt)
+                self.assert_(isinstance(htype, h5t.TypeIntegerID), "wrong class")
+                self.assertEqual(htype.get_size(), l, "wrong size")
+                self.assertEqual(htype.get_sign(), h5t.SGN_2, "wrong sign")
+                if l != 1:  # NumPy does not allow ordering of 1-byte types
+                    self.assertEqual(htype.get_order(), bytemap[b[0]])
+
+    def test_uinteger(self):
+        """ Unsigned integer translation
+
+        - TypeIntegerID
+        - 1, 2, 4, 8 bytes
+        - LE and BE
+        - Unsigned
+        """
+        bases = ('=u', '<u', '>u')
+
+        for b in bases:
+            for l in (1, 2, 4, 8):
+                dt = "%s%s" % (b, l)
+                htype = h5t.py_create(dt)
+                self.assert_(isinstance(htype, h5t.TypeIntegerID), "wrong class")
+                self.assertEqual(htype.get_size(), l, "wrong size")
+                self.assertEqual(htype.get_sign(), h5t.SGN_NONE, "wrong sign")
+                if l != 1:
+                    self.assertEqual(htype.get_order(), bytemap[b[0]], "wrong order")
+
+    def test_float(self):
+        """ Floating-point translation
+
+        - TypeFloatID
+        - 1, 2, 4, 8 bytes
+        - LE and BE
+        - Unsigned
+        """
+        bases = ('=f', '<f', '>f')
+        
+        for b in bases:
+            for l in (4, 8):
+                dt = "%s%s" % (b, l)
+                htype = h5t.py_create(dt)
+                self.assert_(isinstance(htype, h5t.TypeFloatID), "wrong class")
+                self.assertEqual(htype.get_size(), l, "wrong size")
+                self.assertEqual(htype.get_order(), bytemap[b[0]])
+
+    def test_complex(self):
+        """ Complex type translation
+
+        - TypeComplexID
+        - 8, 16 bytes
+        - LE and BE
+        - 2 members
+        - Member names from cfg.complex_names
+        - Members are TypeFloatID
+        """
+        bases = ('=c', '<c', '>c')
+        
+        for b in bases:
+            for l in (8, 16):
+                dt = '%s%s' % (b, l)
+                htype = h5t.py_create(dt)
+                self.assert_(isinstance(htype, h5t.TypeCompoundID), "wrong class")
+                self.assertEqual(htype.get_size(), l, "wrong size")
+                self.assertEqual(htype.get_nmembers(), 2, "wrong # members")
+                for idx in (0, 1):
+                    self.assertEqual(htype.get_member_name(idx), cfg.complex_names[idx])
+                    st = htype.get_member_type(idx)
+                    self.assert_(isinstance(st, h5t.TypeFloatID))
+                    self.assertEqual(st.get_size(), l//2)
+                    self.assertEqual(st.get_order(), bytemap[b[0]])
+
+    def test_string(self):
+        """ Fixed-length string translation
+
+        - TypeStringID
+        - Fixed-length
+        - Size 1 byte to 2**31-1 bytes
+        - Charset ASCII
+        - Null-padded
+        """
+
+        for l in (1, 23, 2**31-1):
+            dt = '|S%s' % l
+            htype = h5t.py_create(dt)
+            self.assert_(isinstance(htype, h5t.TypeStringID), "wrong class")
+            self.assertEqual(htype.get_size(), l)
+            self.assertEqual(htype.get_cset(), h5t.CSET_ASCII, "wrong cset")
+            self.assertEqual(htype.get_strpad(), h5t.STR_NULLPAD, "wrong padding")
+            self.assert_(not htype.is_variable_str(), "should be fixed str")
+
+    def test_vlstring(self):
+        """ Variable-length string translation
+
+        In literal mode:
+        - TypeOpaqueID
+        - Equal to PYTHON_OBJECT
+
+        In logical mode:
+        - TypeStringID
+        - Variable-length
+        - Charset ASCII
+        - Null-terminated
+        """
+
+        dt = h5t.py_new_vlen(str)
+        htype = h5t.py_create(dt)
+        self.assert_(isinstance(htype, h5t.TypeOpaqueID))
+        self.assertEqual(htype, h5t.PYTHON_OBJECT)
+
+        htype = h5t.py_create(dt, logical=True)
+        self.assert_(isinstance(htype, h5t.TypeStringID))
+        self.assert_(htype.is_variable_str())
+        self.assertEqual(htype.get_cset(), h5t.CSET_ASCII)
+        self.assertEqual(htype.get_strpad(), h5t.STR_NULLTERM)
+
+    def test_boolean(self):
+        """ Boolean type translation
+
+        - TypeEnumID
+        - Base TypeIntegerID
+        - Base 1 byte
+        - Base signed
+        - Member names from cfg.bool_names
+        - 2 values
+        - Values 0, 1
+        """
+
+        htype = h5t.py_create('bool')
+        self.assert_(isinstance(htype, h5t.TypeEnumID), "wrong class")
+        self.assertEqual(htype.get_nmembers(), 2, "must be 2-element enum")
+        basetype = htype.get_super()
+        self.assertEqual(basetype.get_size(), 1, "wrong size")
+        self.assertEqual(basetype.get_sign(), h5t.SGN_2, "wrong sign")
+        for idx in (0,1):
+            self.assertEqual(htype.get_member_name(idx), cfg.bool_names[idx], "wrong name")
+            self.assertEqual(htype.get_member_value(idx), idx, "wrong value")
+
+    def test_opaque(self):
+        """ Opaque type translation
+
+        - TypeOpaqueID
+        - Sizes 1 byte to 2**31-1 bytes
+        - Empty tag
+        """
+
+        for l in (1, 21, 2**31-1):
+            htype = h5t.py_create('|V%s' % l)
+            self.assert_(isinstance(htype, h5t.TypeOpaqueID))
+            self.assertEqual(htype.get_size(), l)
+            self.assertEqual(htype.get_tag(), "")
+
+    def test_enum(self):
+        """ Enum type translation
+
+        - TypeEnumID
+        - Base TypeIntegerID
+        - 0 to (at least) 1000 values
+        """
+        enums = [{}, {'a': 0, 'b': 1}, dict(("%s" % d, d) for d in xrange(1000)) ]
+        bases = ('|i1', '|u1', '<i4', '>i4', '<u8')
+
+        for b in bases:
+            for e in enums:
+                dt = h5t.py_new_enum(b, e)
+                htype = h5t.py_create(dt)
+                htype_comp = h5t.py_create(b)
+                self.assert_(isinstance(htype, h5t.TypeEnumID))
+                basetype = h5t.get_super()
+                self.assertEqual(htype_comp, basetype)
+                self.assertEqual(htype.get_nmembers(), len(e))
+                for idx in xrange(htype.get_nmembers()):
+                    name = htype.get_member_name(idx)
+                    val = htype.get_member_value(idx)
+                    self.assertEqual(e[name], value)
+
+
 
 

-- 
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