Initial commit
This commit is contained in:
554
tests/test_operators.py
Normal file
554
tests/test_operators.py
Normal file
@@ -0,0 +1,554 @@
|
||||
# Note: testcases generated via `python -m cxxheaderparser.gentest`
|
||||
|
||||
from cxxheaderparser.types import (
|
||||
ClassDecl,
|
||||
FundamentalSpecifier,
|
||||
NameSpecifier,
|
||||
Operator,
|
||||
PQName,
|
||||
Parameter,
|
||||
Reference,
|
||||
Type,
|
||||
)
|
||||
from cxxheaderparser.simple import (
|
||||
ClassScope,
|
||||
NamespaceScope,
|
||||
parse_string,
|
||||
ParsedData,
|
||||
)
|
||||
|
||||
|
||||
def test_class_operators():
|
||||
content = r"""
|
||||
class OperatorClass {
|
||||
public:
|
||||
void operator=(const Sample25Class &);
|
||||
void operator-=(const Sample25Class &);
|
||||
void operator+=();
|
||||
void operator[]();
|
||||
bool operator==(const int &b);
|
||||
OperatorClass &operator+();
|
||||
void operator-();
|
||||
void operator*();
|
||||
void operator\();
|
||||
void operator%();
|
||||
void operator^();
|
||||
void operator|();
|
||||
void operator&();
|
||||
void operator~();
|
||||
void operator<<();
|
||||
void operator>>();
|
||||
void operator!=();
|
||||
void operator<();
|
||||
void operator>();
|
||||
void operator>=();
|
||||
void operator<=();
|
||||
void operator!();
|
||||
void operator&&();
|
||||
void operator||();
|
||||
void operator+=();
|
||||
void operator-=();
|
||||
void operator*=();
|
||||
void operator\=();
|
||||
void operator%=();
|
||||
void operator&=();
|
||||
void operator|=();
|
||||
void operator^=();
|
||||
void operator<<=();
|
||||
void operator>>=();
|
||||
void operator++();
|
||||
void operator--();
|
||||
void operator()();
|
||||
void operator->();
|
||||
void operator,();
|
||||
};
|
||||
"""
|
||||
data = parse_string(content, cleandoc=True)
|
||||
|
||||
assert data == ParsedData(
|
||||
namespace=NamespaceScope(
|
||||
classes=[
|
||||
ClassScope(
|
||||
class_decl=ClassDecl(
|
||||
typename=PQName(
|
||||
segments=[NameSpecifier(name="OperatorClass")],
|
||||
classkey="class",
|
||||
)
|
||||
),
|
||||
methods=[
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator=")]),
|
||||
parameters=[
|
||||
Parameter(
|
||||
type=Reference(
|
||||
ref_to=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="Sample25Class")
|
||||
]
|
||||
),
|
||||
const=True,
|
||||
)
|
||||
)
|
||||
)
|
||||
],
|
||||
access="public",
|
||||
operator="=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator-=")]),
|
||||
parameters=[
|
||||
Parameter(
|
||||
type=Reference(
|
||||
ref_to=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
NameSpecifier(name="Sample25Class")
|
||||
]
|
||||
),
|
||||
const=True,
|
||||
)
|
||||
)
|
||||
)
|
||||
],
|
||||
access="public",
|
||||
operator="-=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator+=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="+=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator[]")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="[]",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="bool")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator==")]),
|
||||
parameters=[
|
||||
Parameter(
|
||||
type=Reference(
|
||||
ref_to=Type(
|
||||
typename=PQName(
|
||||
segments=[
|
||||
FundamentalSpecifier(name="int")
|
||||
]
|
||||
),
|
||||
const=True,
|
||||
)
|
||||
),
|
||||
name="b",
|
||||
)
|
||||
],
|
||||
access="public",
|
||||
operator="==",
|
||||
),
|
||||
Operator(
|
||||
return_type=Reference(
|
||||
ref_to=Type(
|
||||
typename=PQName(
|
||||
segments=[NameSpecifier(name="OperatorClass")]
|
||||
)
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator+")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="+",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator-")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="-",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator*")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="*",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator\\")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="\\",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator%")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="%",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator^")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="^",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator|")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="|",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator&")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="&",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator~")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="~",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator<<")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="<<",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator>>")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator=">>",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator!=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="!=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator<")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="<",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator>")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator=">",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator>=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator=">=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator<=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="<=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator!")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="!",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator&&")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="&&",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator||")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="||",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator+=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="+=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator-=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="-=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator*=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="*=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator\\=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="\\=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator%=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="%=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator&=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="&=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator|=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="|=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator^=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="^=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator<<=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="<<=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator>>=")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator=">>=",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator++")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="++",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator--")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="--",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator()")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="()",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator->")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator="->",
|
||||
),
|
||||
Operator(
|
||||
return_type=Type(
|
||||
typename=PQName(
|
||||
segments=[FundamentalSpecifier(name="void")]
|
||||
)
|
||||
),
|
||||
name=PQName(segments=[NameSpecifier(name="operator,")]),
|
||||
parameters=[],
|
||||
access="public",
|
||||
operator=",",
|
||||
),
|
||||
],
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user