| # This file is dual licensed under the terms of the Apache License, Version | |
| # 2.0, and the BSD License. See the LICENSE file in the root of this repository | |
| # for complete details. | |
| from __future__ import absolute_import, division, print_function | |
| import pytest | |
| from cryptography import utils | |
| def test_int_from_bytes_bytearray(): | |
| assert utils.int_from_bytes(bytearray(b"\x02\x10"), "big") == 528 | |
| with pytest.raises(TypeError): | |
| utils.int_from_bytes(["list", "is", "not", "bytes"], "big") | |
| class TestCachedProperty(object): | |
| def test_simple(self): | |
| accesses = [] | |
| class T(object): | |
| @utils.cached_property | |
| def t(self): | |
| accesses.append(None) | |
| return 14 | |
| assert T.t | |
| t = T() | |
| assert t.t == 14 | |
| assert len(accesses) == 1 | |
| assert t.t == 14 | |
| assert len(accesses) == 1 | |
| t = T() | |
| assert t.t == 14 | |
| assert len(accesses) == 2 | |
| assert t.t == 14 | |
| assert len(accesses) == 2 | |
| def test_set(self): | |
| accesses = [] | |
| class T(object): | |
| @utils.cached_property | |
| def t(self): | |
| accesses.append(None) | |
| return 14 | |
| t = T() | |
| with pytest.raises(AttributeError): | |
| t.t = None | |
| assert len(accesses) == 0 | |
| assert t.t == 14 | |
| assert len(accesses) == 1 | |
| with pytest.raises(AttributeError): | |
| t.t = None | |
| assert len(accesses) == 1 | |
| assert t.t == 14 | |
| assert len(accesses) == 1 | |
| def test_bit_length(): | |
| assert utils.bit_length(1) == 1 | |
| assert utils.bit_length(11) == 4 |