88 lines
1.8 KiB
Python
88 lines
1.8 KiB
Python
from dataclasses import dataclass
|
|
|
|
from megasniff import SchemaInflatorGenerator
|
|
|
|
|
|
def test_list_basic():
|
|
@dataclass
|
|
class A:
|
|
l: list[int]
|
|
|
|
infl = SchemaInflatorGenerator()
|
|
fn = infl.schema_to_inflator(A)
|
|
|
|
a = fn({'l': []})
|
|
assert isinstance(a.l, list)
|
|
assert len(a.l) == 0
|
|
|
|
a = fn({'l': [1, 2.1, '0']})
|
|
print(a.l)
|
|
assert isinstance(a.l, list)
|
|
assert len(a.l) == 3
|
|
assert all(map(lambda x: isinstance(x, int), a.l))
|
|
|
|
@dataclass
|
|
class B:
|
|
l: list[str]
|
|
|
|
fn = infl.schema_to_inflator(B)
|
|
|
|
a = fn({'l': [1, 2.1, '0']})
|
|
print(a.l)
|
|
assert isinstance(a.l, list)
|
|
assert len(a.l) == 3
|
|
assert all(map(lambda x: isinstance(x, str), a.l))
|
|
assert a.l == ['1', '2.1', '0']
|
|
|
|
|
|
def test_list_union():
|
|
@dataclass
|
|
class A:
|
|
l: list[int | str]
|
|
|
|
infl = SchemaInflatorGenerator()
|
|
fn = infl.schema_to_inflator(A)
|
|
|
|
a = fn({'l': []})
|
|
assert isinstance(a.l, list)
|
|
assert len(a.l) == 0
|
|
|
|
a = fn({'l': [1, 2.1, '0']})
|
|
print(a.l)
|
|
assert isinstance(a.l, list)
|
|
assert len(a.l) == 3
|
|
assert all(map(lambda x: isinstance(x, int), a.l))
|
|
|
|
|
|
def test_set_basic():
|
|
|
|
@dataclass
|
|
class A:
|
|
l: set[int]
|
|
|
|
infl = SchemaInflatorGenerator()
|
|
fn = infl.schema_to_inflator(A)
|
|
|
|
a = fn({'l': []})
|
|
assert isinstance(a.l, set)
|
|
assert len(a.l) == 0
|
|
|
|
a = fn({'l': [1, 2.1, '0']})
|
|
print(a.l)
|
|
assert isinstance(a.l, set)
|
|
assert len(a.l) == 3
|
|
assert all(map(lambda x: isinstance(x, int), a.l))
|
|
|
|
@dataclass
|
|
class B:
|
|
l: set[str]
|
|
|
|
fn = infl.schema_to_inflator(B)
|
|
|
|
a = fn({'l': [1, 2.1, '0', 0]})
|
|
print(a.l)
|
|
assert isinstance(a.l, set)
|
|
assert len(a.l) == 3
|
|
assert all(map(lambda x: isinstance(x, str), a.l))
|
|
assert a.l == {'1', '2.1', '0'}
|