-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_class.py
90 lines (72 loc) · 1.84 KB
/
test_class.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from textwrap import dedent
import fluentcst as fcst
def test_field_can_be_fluent_dict():
code = fcst.ClassDef("Cls1").field("f1", fcst.Dict().element("d1", "v1")).to_code()
assert code == dedent(
"""\
class Cls1:
f1 = {"d1": "v1"}
"""
)
def test_field_can_be_nested_dicts():
code = (
fcst.ClassDef("Cls1").field("f1", {"d1": "v1", "d2": {"d2.1": "v1"}}).to_code()
)
assert code == dedent(
"""\
class Cls1:
f1 = {"d1": "v1", "d2": {"d2.1": "v1"}}
"""
)
def test_field_can_be_attribute_with_bitor():
code = (
fcst.ClassDef("Cls1")
.field("data", fcst.Attribute("BaseCls.data").bitor({"a": "b"}))
.to_code()
)
assert code == dedent(
"""\
class Cls1:
data = BaseCls.data | {"a": "b"}
"""
)
def test_field_with_only_type_declaration():
code = fcst.ClassDef("Cls1").field("f1", type="int").to_code()
assert code == dedent(
"""\
class Cls1:
f1: int
"""
)
def test_field_with_list_type():
code = fcst.ClassDef("Cls1").field("f1", type=["int"]).to_code()
assert code == dedent(
"""\
class Cls1:
f1: list[int]
"""
)
def test_field_with_untyped_list():
code = fcst.ClassDef("Cls1").field("f1", type=[]).to_code()
assert code == dedent(
"""\
class Cls1:
f1: list
"""
)
def test_class_with_base_class():
code = fcst.ClassDef("Cls1").base("Base").to_code()
assert code == dedent(
"""\
class Cls1(Base):
pass
"""
)
def test_class_with_base_class_containing_dot():
code = fcst.ClassDef("Cls1").base("module.Base").to_code()
assert code == dedent(
"""\
class Cls1(module.Base):
pass
"""
)