mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-12-01 13:53:45 +03:00
101 lines
2.7 KiB
Python
101 lines
2.7 KiB
Python
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),
|
|
),
|
|
)
|