28 lines
752 B
Python
28 lines
752 B
Python
from __future__ import annotations
|
|
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
from src.megasniff.utils import TupleSchemaItem
|
|
from src.megasniff import SchemaInflatorGenerator
|
|
|
|
|
|
def test_basic_tuple():
|
|
infl = SchemaInflatorGenerator()
|
|
|
|
fn = infl.schema_to_inflator({'a': int, 'b': float, 'c': str, 'd': list[int]})
|
|
a = fn({'a': 42, 'b': 1.1, 'c': 123, 'd': []})
|
|
|
|
assert a[0] == 42
|
|
|
|
fn = infl.schema_to_inflator((('a', int), ('b', list[int])))
|
|
a = fn({'a': 42, 'b': ['1']})
|
|
|
|
assert a[1][0] == 1
|
|
|
|
fn = infl.schema_to_inflator(
|
|
(('a', int), TupleSchemaItem(Optional[list[int]], key_name='b', has_default=True, default=None)))
|
|
a = fn({'a': 42})
|
|
|
|
assert a[1] is None
|
|
assert a[0] == 42
|