Skip to content

Commit 0b3482f

Browse files
committed
Add test
1 parent 04c8710 commit 0b3482f

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

tests/test_requires.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Note: testcases generated via `python -m cxxheaderparser.gentest`
2+
3+
from cxxheaderparser.simple import NamespaceScope, ParsedData, parse_string
4+
from cxxheaderparser.types import (
5+
Function,
6+
FundamentalSpecifier,
7+
NameSpecifier,
8+
PQName,
9+
TemplateDecl,
10+
TemplateNonTypeParam,
11+
Token,
12+
Type,
13+
Value,
14+
)
15+
16+
17+
def test_requires_parenthesized_atoms() -> None:
18+
content = """
19+
template <int X>
20+
requires (X == 0) || (X == 1)
21+
int Fibonacci() { return X; }
22+
"""
23+
data = parse_string(content, cleandoc=True)
24+
25+
assert data == ParsedData(
26+
namespace=NamespaceScope(
27+
functions=[
28+
Function(
29+
return_type=Type(
30+
typename=PQName(segments=[FundamentalSpecifier(name="int")])
31+
),
32+
name=PQName(segments=[NameSpecifier(name="Fibonacci")]),
33+
parameters=[],
34+
has_body=True,
35+
template=TemplateDecl(
36+
params=[
37+
TemplateNonTypeParam(
38+
type=Type(
39+
typename=PQName(
40+
segments=[FundamentalSpecifier(name="int")]
41+
)
42+
),
43+
name="X",
44+
)
45+
],
46+
raw_requires_pre=Value(
47+
tokens=[
48+
Token(value="("),
49+
Token(value="X"),
50+
Token(value="="),
51+
Token(value="="),
52+
Token(value="0"),
53+
Token(value=")"),
54+
Token(value="||"),
55+
Token(value="("),
56+
Token(value="X"),
57+
Token(value="="),
58+
Token(value="="),
59+
Token(value="1"),
60+
Token(value=")"),
61+
]
62+
),
63+
),
64+
)
65+
]
66+
)
67+
)

0 commit comments

Comments
 (0)