def test_from_dict(): p = Pri(10, 'foo', 100.0, True) d = {'i': 10, 's': 'foo', 'f': 100.0, 'b': True} assert d == asdict(p) assert p == from_dict(Pri, d) p = {'p': Pri(10, 'foo', 100.0, True)} d = {'p': {'i': 10, 's': 'foo', 'f': 100.0, 'b': True}} assert d == asdict(p) assert p == from_dict(Dict[str, Pri], d) p = [Pri(10, 'foo', 100.0, True)] d = ({'i': 10, 's': 'foo', 'f': 100.0, 'b': True}, ) assert d == asdict(p) assert p == from_dict(List[Pri], d) p = (Pri(10, 'foo', 100.0, True), ) d = ({'i': 10, 's': 'foo', 'f': 100.0, 'b': True}, ) assert d == asdict(p) assert p == from_dict(Tuple[Pri], d)
def test_dataclass_default_factory(se, de): @deserialize @serialize @dataclass class Foo: foo: str items: Dict[str, int] = field(default_factory=dict) f = Foo('bar') assert f == de(Foo, se(f)) assert {'foo': 'bar', 'items': {}} == asdict(f) assert f == from_dict(Foo, {'foo': 'bar'})
def asdict(data): return serde.asdict(data)
def test_asdict(): p = Pri(10, 'foo', 100.0, True) assert {'b': True, 'f': 100.0, 'i': 10, 's': 'foo'} == to_dict(p) assert {'b': True, 'f': 100.0, 'i': 10, 's': 'foo'} == asdict(p)