You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.6 KiB
66 lines
1.6 KiB
# 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
|