mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-08 12:59:46 +00:00
Port tl-gen from grammers
This commit is contained in:
100
generator/tests/parameter_test.py
Normal file
100
generator/tests/parameter_test.py
Normal file
@@ -0,0 +1,100 @@
|
||||
from pytest import mark, raises
|
||||
from telethon_generator.tl_parser import (
|
||||
Flag,
|
||||
FlagsParameter,
|
||||
NormalParameter,
|
||||
Parameter,
|
||||
Type,
|
||||
TypeDefNotImplemented,
|
||||
)
|
||||
|
||||
|
||||
@mark.parametrize("param", [":noname", "notype:", ":"])
|
||||
def test_empty_param(param: str) -> None:
|
||||
with raises(ValueError) as e:
|
||||
Parameter.from_str(param)
|
||||
e.match("empty")
|
||||
|
||||
|
||||
@mark.parametrize("param", ["", "no colon", "colonless"])
|
||||
def test_unknown_param(param: str) -> None:
|
||||
with raises(ValueError) as e:
|
||||
Parameter.from_str(param)
|
||||
e.match("not implemented")
|
||||
|
||||
|
||||
@mark.parametrize("param", ["foo:bar?", "foo:?bar", "foo:bar?baz", "foo:bar.baz?qux"])
|
||||
def test_bad_flags(param: str) -> None:
|
||||
with raises(ValueError) as e:
|
||||
Parameter.from_str(param)
|
||||
e.match("invalid flag")
|
||||
|
||||
|
||||
@mark.parametrize("param", ["foo:<bar", "foo:bar<"])
|
||||
def test_bad_generics(param: str) -> None:
|
||||
with raises(ValueError) as e:
|
||||
Parameter.from_str(param)
|
||||
e.match("invalid generic")
|
||||
|
||||
|
||||
def test_type_def_param() -> None:
|
||||
with raises(TypeDefNotImplemented) as e:
|
||||
Parameter.from_str("{a:Type}")
|
||||
e.match("typedef not implemented: a")
|
||||
|
||||
|
||||
def test_unknown_def_param() -> None:
|
||||
with raises(ValueError) as e:
|
||||
Parameter.from_str("{a:foo}")
|
||||
e.match("missing def")
|
||||
|
||||
|
||||
def test_valid_param() -> None:
|
||||
assert Parameter.from_str("foo:#") == Parameter(name="foo", ty=FlagsParameter())
|
||||
assert Parameter.from_str("foo:!bar") == Parameter(
|
||||
name="foo",
|
||||
ty=NormalParameter(
|
||||
ty=Type(
|
||||
namespace=[], name="bar", bare=True, generic_ref=True, generic_arg=None
|
||||
),
|
||||
flag=None,
|
||||
),
|
||||
)
|
||||
assert Parameter.from_str("foo:bar.1?baz") == Parameter(
|
||||
name="foo",
|
||||
ty=NormalParameter(
|
||||
ty=Type(
|
||||
namespace=[], name="baz", bare=True, generic_ref=False, generic_arg=None
|
||||
),
|
||||
flag=Flag(
|
||||
name="bar",
|
||||
index=1,
|
||||
),
|
||||
),
|
||||
)
|
||||
assert Parameter.from_str("foo:bar<baz>") == Parameter(
|
||||
name="foo",
|
||||
ty=NormalParameter(
|
||||
ty=Type(
|
||||
namespace=[],
|
||||
name="bar",
|
||||
bare=True,
|
||||
generic_ref=False,
|
||||
generic_arg=Type.from_str("baz"),
|
||||
),
|
||||
flag=None,
|
||||
),
|
||||
)
|
||||
assert Parameter.from_str("foo:bar.1?baz<qux>") == Parameter(
|
||||
name="foo",
|
||||
ty=NormalParameter(
|
||||
ty=Type(
|
||||
namespace=[],
|
||||
name="baz",
|
||||
bare=True,
|
||||
generic_ref=False,
|
||||
generic_arg=Type.from_str("qux"),
|
||||
),
|
||||
flag=Flag(name="bar", index=1),
|
||||
),
|
||||
)
|
Reference in New Issue
Block a user