[python-hdf5storage] 50/152: Added initial tests.

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Mon Feb 29 08:24:33 UTC 2016


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

ghisvail-guest pushed a commit to annotated tag 0.1
in repository python-hdf5storage.

commit 56cdd7379758b0e4a2f24a8c5107a79c60baee22
Author: Freja Nordsiek <fnordsie at gmail.com>
Date:   Mon Jan 27 02:26:56 2014 -0500

    Added initial tests.
---
 tests/test_write_readback.py | 176 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 176 insertions(+)

diff --git a/tests/test_write_readback.py b/tests/test_write_readback.py
new file mode 100755
index 0000000..e23cb39
--- /dev/null
+++ b/tests/test_write_readback.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python3
+
+import sys
+import os
+import os.path
+import posixpath
+import string
+import math
+import random
+import unittest
+
+import numpy as np
+
+import hdf5storage
+
+
+random.seed()
+
+
+class TestWriteReadbackCpythonMatlab(unittest.TestCase):
+    def setUp(self):
+        self.filename = 'data.h5'
+
+        # Use the default options.
+        self.options = hdf5storage.Options()
+
+        # Now, there is a write_readback_X and assert_equal_X where X is
+        # a type for every type. Unless one is overridden in a subclass,
+        # they should all point to write_readback. Storing things in the
+        # dict self.__dict__ will do this.
+
+        types = ['None', 'bool', 'int', 'float', 'complex', 'str',
+                 'bytes', 'bytearray']
+        for tp in types:
+            self.__dict__['write_readback_' + tp] = self.write_readback
+            self.__dict__['assert_equal_' + tp] = self.assert_equal
+
+    def random_str_ascii(self, length):
+        ltrs = string.ascii_letters + string.digits
+        return ''.join([random.choice(ltrs) for i in range(0, length)])
+
+    def random_bytes(self, length):
+        ltrs = bytes(range(1, 127))
+        return bytes([random.choice(ltrs) for i in range(0, length)])
+
+    def random_int(self):
+        return random.randint(-(2**63 - 1), 2**63)
+
+    def random_float(self):
+        return random.uniform(-1.0, 1.0) \
+            * 10.0**random.randint(-300, 300)
+
+    def random_name(self):
+        depth = random.randint(1, 5)
+        path = '/'
+        for i in range(0, depth):
+            path = posixpath.join(path, self.random_str_ascii(
+                                  random.randint(1, 17)))
+        return path
+
+    def write_readback(self, data, name, options):
+        # Write the data to the proper file with the given name, read it
+        # back, and return the result. The file needs to be deleted
+        # before and after to keep junk from building up.
+        if os.path.exists(self.filename):
+            os.remove(self.filename)
+        try:
+            hdf5storage.write(data, name=name, filename=self.filename,
+                              options=options)
+            out = hdf5storage.read(name=name, filename=self.filename,
+                                options=options)
+        except:
+            raise
+        finally:
+            if os.path.exists(self.filename):
+                os.remove(self.filename)
+        return out
+
+    def assert_equal(self, a, b):
+        self.assertEqual(a, b)
+
+    def test_None(self):
+        data = None
+        out = self.write_readback_None(data, self.random_name(),
+                                       self.options)
+        self.assert_equal_None(data, out)
+
+    def test_bool_True(self):
+        data = True
+        out = self.write_readback_bool(data, self.random_name(),
+                                       self.options)
+        self.assert_equal_bool(data, out)
+
+    def test_bool_False(self):
+        data = False
+        out = self.write_readback_bool(data, self.random_name(),
+                                       self.options)
+        self.assert_equal_bool(data, out)
+
+    def test_int(self):
+        data = self.random_int()
+        out = self.write_readback_int(data, self.random_name(),
+                                      self.options)
+        self.assert_equal_int(data, out)
+
+    def test_float(self):
+        data = self.random_float()
+        out = self.write_readback_float(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_float(data, out)
+
+    def test_float_inf(self):
+        data = float(np.inf)
+        out = self.write_readback_float(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_float(data, out)
+
+    def test_float_ninf(self):
+        data = float(-np.inf)
+        out = self.write_readback_float(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_float(data, out)
+
+    def test_float_nan(self):
+        data = float(np.nan)
+        out = self.write_readback_float(data, self.random_name(),
+                                        self.options)
+        self.assertTrue(math.isnan(out))
+
+    def test_complex(self):
+        data = self.random_float() + 1j*self.random_float()
+        out = self.write_readback_float(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_float(data, out)
+
+    def test_str(self):
+        data = self.random_str_ascii(random.randint(1, 100))
+        out = self.write_readback_str(data, self.random_name(),
+                                      self.options)
+        self.assert_equal_str(data, out)
+
+    @unittest.expectedFailure
+    def test_str_empty(self):
+        data = ''
+        out = self.write_readback_str(data, self.random_name(),
+                                      self.options)
+        self.assert_equal_str(data, out)
+
+    def test_bytes(self):
+        data = self.random_bytes(random.randint(1, 100))
+        out = self.write_readback_bytes(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_bytes(data, out)
+
+    @unittest.expectedFailure
+    def test_bytes_empty(self):
+        data = b''
+        out = self.write_readback_bytes(data, self.random_name(),
+                                        self.options)
+        self.assert_equal_bytes(data, out)
+
+    def test_bytearray(self):
+        data = bytearray(self.random_bytes(random.randint(1, 100)))
+        out = self.write_readback_bytearray(data, self.random_name(),
+                                            self.options)
+        self.assert_equal_bytearray(data, out)
+
+    @unittest.expectedFailure
+    def test_bytearray_empty(self):
+        data = bytearray(b'')
+        out = self.write_readback_bytearray(data, self.random_name(),
+                                            self.options)
+        self.assert_equal_bytearray(data, out)
+
+if __name__ == '__main__':
+    unittest.main()

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



More information about the debian-science-commits mailing list