MCPcopy
hub / github.com/python-attrs/attrs / test_recurse_property

Method test_recurse_property

tests/test_funcs.py:104–134  ·  view source on GitHub ↗

Property tests for recursive asdict.

(self, cls, dict_class)

Source from the content-addressed store, hash-verified

102
103 @given(nested_classes, st.sampled_from(MAPPING_TYPES))
104 def test_recurse_property(self, cls, dict_class):
105 """
106 Property tests for recursive asdict.
107 """
108 obj = cls()
109 obj_dict = asdict(obj, dict_factory=dict_class)
110
111 def assert_proper_dict_class(obj, obj_dict):
112 assert isinstance(obj_dict, dict_class)
113
114 for field in fields(obj.__class__):
115 field_val = getattr(obj, field.name)
116 if has(field_val.__class__):
117 # This field holds a class, recurse the assertions.
118 assert_proper_dict_class(field_val, obj_dict[field.name])
119 elif isinstance(field_val, Sequence):
120 dict_val = obj_dict[field.name]
121 for item, item_dict in zip(field_val, dict_val):
122 if has(item.__class__):
123 assert_proper_dict_class(item, item_dict)
124 elif isinstance(field_val, Mapping):
125 # This field holds a dictionary.
126 assert isinstance(obj_dict[field.name], dict_class)
127
128 for key, val in field_val.items():
129 if has(val.__class__):
130 assert_proper_dict_class(
131 val, obj_dict[field.name][key]
132 )
133
134 assert_proper_dict_class(obj, obj_dict)
135
136 @given(st.sampled_from(MAPPING_TYPES))
137 def test_filter(self, C, dict_factory):

Callers

nothing calls this directly

Calls 1

asdictFunction · 0.90

Tested by

no test coverage detected