Changeset View
Changeset View
Standalone View
Standalone View
swh/model/tests/test_model.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import copy | import copy | ||||
from hypothesis import given | from hypothesis import given | ||||
from swh.model.model import Content | from swh.model.model import Content | ||||
from swh.model.hypothesis_strategies import objects | from swh.model.hypothesis_strategies import objects, origins | ||||
@given(objects()) | @given(objects()) | ||||
def test_todict_inverse_fromdict(objtype_and_obj): | def test_todict_inverse_fromdict(objtype_and_obj): | ||||
(obj_type, obj) = objtype_and_obj | (obj_type, obj) = objtype_and_obj | ||||
if obj_type == 'origin': | |||||
return | |||||
obj_as_dict = obj.to_dict() | obj_as_dict = obj.to_dict() | ||||
obj_as_dict_copy = copy.deepcopy(obj_as_dict) | obj_as_dict_copy = copy.deepcopy(obj_as_dict) | ||||
# Check the composition of to_dict and from_dict is the identity | # Check the composition of to_dict and from_dict is the identity | ||||
assert obj == type(obj).from_dict(obj_as_dict) | assert obj == type(obj).from_dict(obj_as_dict) | ||||
# Check from_dict() does not change the input dict | # Check from_dict() does not change the input dict | ||||
assert obj_as_dict == obj_as_dict_copy | assert obj_as_dict == obj_as_dict_copy | ||||
# Check the composition of from_dict and to_dict is the identity | # 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() | 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) | |||||
def test_content_get_hash(): | def test_content_get_hash(): | ||||
hashes = dict( | hashes = dict( | ||||
sha1=b'foo', sha1_git=b'bar', sha256=b'baz', blake2s256=b'qux') | sha1=b'foo', sha1_git=b'bar', sha256=b'baz', blake2s256=b'qux') | ||||
c = Content(length=42, status='visible', **hashes) | c = Content(length=42, status='visible', **hashes) | ||||
for (hash_name, hash_) in hashes.items(): | for (hash_name, hash_) in hashes.items(): | ||||
assert c.get_hash(hash_name) == hash_ | assert c.get_hash(hash_name) == hash_ |