mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-08 04:52:30 +00:00
Port tl-gen from grammers
This commit is contained in:
90
generator/tests/ty_test.py
Normal file
90
generator/tests/ty_test.py
Normal file
@@ -0,0 +1,90 @@
|
||||
from typing import Optional
|
||||
|
||||
from pytest import mark, raises
|
||||
from telethon_generator.tl_parser import Type
|
||||
|
||||
|
||||
def test_empty_simple() -> None:
|
||||
with raises(ValueError) as e:
|
||||
Type.from_str("")
|
||||
e.match("empty")
|
||||
|
||||
|
||||
def test_simple() -> None:
|
||||
assert Type.from_str("foo") == Type(
|
||||
namespace=[], name="foo", bare=True, generic_ref=False, generic_arg=None
|
||||
)
|
||||
|
||||
|
||||
@mark.parametrize("ty", [".", "..", ".foo", "foo.", "foo..foo", ".foo."])
|
||||
def test_check_empty_namespaced(ty: str) -> None:
|
||||
with raises(ValueError) as e:
|
||||
Type.from_str(ty)
|
||||
e.match("empty")
|
||||
|
||||
|
||||
def test_check_namespaced() -> None:
|
||||
assert Type.from_str("foo.bar.baz") == Type(
|
||||
namespace=["foo", "bar"],
|
||||
name="baz",
|
||||
bare=True,
|
||||
generic_ref=False,
|
||||
generic_arg=None,
|
||||
)
|
||||
|
||||
|
||||
@mark.parametrize(
|
||||
"ty",
|
||||
[
|
||||
"foo",
|
||||
"Foo.bar",
|
||||
"!bar",
|
||||
],
|
||||
)
|
||||
def test_bare(ty: str) -> None:
|
||||
assert Type.from_str(ty).bare
|
||||
|
||||
|
||||
@mark.parametrize(
|
||||
"ty",
|
||||
[
|
||||
"Foo",
|
||||
"Foo.Bar",
|
||||
"!foo.Bar",
|
||||
],
|
||||
)
|
||||
def test_bare_not(ty: str) -> None:
|
||||
assert not Type.from_str(ty).bare
|
||||
|
||||
|
||||
@mark.parametrize(
|
||||
"ty",
|
||||
[
|
||||
"!f",
|
||||
"!Foo",
|
||||
"!X",
|
||||
],
|
||||
)
|
||||
def test_generic_ref(ty: str) -> None:
|
||||
assert Type.from_str(ty).generic_ref
|
||||
|
||||
|
||||
def test_generic_ref_not() -> None:
|
||||
assert not Type.from_str("f").generic_ref
|
||||
|
||||
|
||||
@mark.parametrize(
|
||||
("ty", "generic"),
|
||||
[
|
||||
("foo.bar", None),
|
||||
("foo<bar>", "bar"),
|
||||
("foo<bar.Baz>", "bar.Baz"),
|
||||
("foo<!bar.Baz>", "!bar.Baz"),
|
||||
("foo<bar<baz>>", "bar<baz>"),
|
||||
],
|
||||
)
|
||||
def test_generic_arg(ty: str, generic: Optional[str]) -> None:
|
||||
if generic is None:
|
||||
assert Type.from_str(ty).generic_arg is None
|
||||
else:
|
||||
assert Type.from_str(ty).generic_arg == Type.from_str(generic)
|
Reference in New Issue
Block a user