Newer
Older
# Copyright (C) 2019 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from hypothesis import given
from swh.model.hypothesis_strategies import objects, origins, origin_visits
@given(objects())
def test_todict_inverse_fromdict(objtype_and_obj):
(obj_type, obj) = objtype_and_obj
if obj_type in ('origin', 'origin_visit'):
obj_as_dict = obj.to_dict()
obj_as_dict_copy = copy.deepcopy(obj_as_dict)
# Check the composition of to_dict and from_dict is the identity
assert obj == type(obj).from_dict(obj_as_dict)
# Check from_dict() does not change the input dict
assert obj_as_dict == obj_as_dict_copy
# Check the composition of from_dict and to_dict is the identity
assert obj_as_dict == type(obj).from_dict(obj_as_dict).to_dict()
@given(origins())
def test_todict_origins(origin):
obj = origin.to_dict()
assert 'type' not in obj
assert type(origin)(url=origin.url) == type(origin).from_dict(obj)
@given(origin_visits())
def test_todict_origin_visits(origin_visit):
obj = origin_visit.to_dict()
assert 'type' not in obj['origin']
origin_visit.origin.type = None
assert origin_visit == type(origin_visit).from_dict(obj)
def test_content_get_hash():
hashes = dict(
sha1=b'foo', sha1_git=b'bar', sha256=b'baz', blake2s256=b'qux')
c = Content(length=42, status='visible', **hashes)
for (hash_name, hash_) in hashes.items():
assert c.get_hash(hash_name) == hash_