ยปCore Development>Code coverage>Lib/test/test_pep247.py

Python code coverage for Lib/test/test_pep247.py

#countcontent
1n/a"""
2n/aTest suite to check compliance with PEP 247, the standard API
3n/afor hashing algorithms
4n/a"""
5n/a
6n/aimport hmac
7n/aimport unittest
8n/afrom hashlib import md5, sha1, sha224, sha256, sha384, sha512
9n/a
10n/aclass Pep247Test(unittest.TestCase):
11n/a
12n/a def check_module(self, module, key=None):
13n/a self.assertTrue(hasattr(module, 'digest_size'))
14n/a self.assertTrue(module.digest_size is None or module.digest_size > 0)
15n/a self.check_object(module.new, module.digest_size, key)
16n/a
17n/a def check_object(self, cls, digest_size, key, digestmod=None):
18n/a if key is not None:
19n/a if digestmod is None:
20n/a digestmod = md5
21n/a obj1 = cls(key, digestmod=digestmod)
22n/a obj2 = cls(key, b'string', digestmod=digestmod)
23n/a h1 = cls(key, b'string', digestmod=digestmod).digest()
24n/a obj3 = cls(key, digestmod=digestmod)
25n/a obj3.update(b'string')
26n/a h2 = obj3.digest()
27n/a else:
28n/a obj1 = cls()
29n/a obj2 = cls(b'string')
30n/a h1 = cls(b'string').digest()
31n/a obj3 = cls()
32n/a obj3.update(b'string')
33n/a h2 = obj3.digest()
34n/a self.assertEqual(h1, h2)
35n/a self.assertTrue(hasattr(obj1, 'digest_size'))
36n/a
37n/a if digest_size is not None:
38n/a self.assertEqual(obj1.digest_size, digest_size)
39n/a
40n/a self.assertEqual(obj1.digest_size, len(h1))
41n/a obj1.update(b'string')
42n/a obj_copy = obj1.copy()
43n/a self.assertEqual(obj1.digest(), obj_copy.digest())
44n/a self.assertEqual(obj1.hexdigest(), obj_copy.hexdigest())
45n/a
46n/a digest, hexdigest = obj1.digest(), obj1.hexdigest()
47n/a hd2 = ""
48n/a for byte in digest:
49n/a hd2 += '%02x' % byte
50n/a self.assertEqual(hd2, hexdigest)
51n/a
52n/a def test_md5(self):
53n/a self.check_object(md5, None, None)
54n/a
55n/a def test_sha(self):
56n/a self.check_object(sha1, None, None)
57n/a self.check_object(sha224, None, None)
58n/a self.check_object(sha256, None, None)
59n/a self.check_object(sha384, None, None)
60n/a self.check_object(sha512, None, None)
61n/a
62n/a def test_hmac(self):
63n/a self.check_module(hmac, key=b'abc')
64n/a
65n/aif __name__ == '__main__':
66n/a unittest.main()