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