Fix doxygen tests

This commit is contained in:
Dustin Spicuzza 2020-12-31 00:24:45 -05:00
parent 3f9c03a37b
commit a6977325b9

View File

@ -37,185 +37,256 @@ from cxxheaderparser.simple import (
ParsedData, ParsedData,
) )
r"""
class SampleClass: public BaseSampleClass
{
public:
enum Elephant
{
EL_ONE = 1,
EL_TWO = 2,
EL_NINE = 9,
EL_TEN,
};
SampleClass(); def test_doxygen_class():
/*! content = """
* Method 1 // clang-format off
*/
string meth1(); /// cls comment
class
C {
/// member comment
void fn();
/// var above
int var_above;
int var_after; /// var after
};
"""
data = parse_string(content, cleandoc=True)
/// assert data == ParsedData(
/// Method 2 description namespace=NamespaceScope(
/// classes=[
/// @param v1 Variable 1 ClassScope(
/// class_decl=ClassDecl(
int meth2(int v1); typename=PQName(
segments=[NameSpecifier(name="C")], classkey="class"
/** ),
* Method 3 description doxygen="/// cls comment",
* ),
* \param v1 Variable 1 with a really long fields=[
* wrapping description Field(
* \param v2 Variable 2 access="private",
*/ type=Type(
void meth3(const string & v1, vector<string> & v2); typename=PQName(
segments=[FundamentalSpecifier(name="int")]
/********************************** )
* Method 4 description ),
* name="var_above",
* @return Return value doxygen="/// var above",
*********************************/ ),
unsigned int meth4(); Field(
private: access="private",
void * meth5(){return NULL;} type=Type(
typename=PQName(
/// prop1 description segments=[FundamentalSpecifier(name="int")]
string prop1; )
//! prop5 description ),
int prop5; name="var_after",
doxygen="/// var after",
bool prop6; /*!< prop6 description */ ),
],
double prop7; //!< prop7 description methods=[
//!< with two lines Method(
return_type=Type(
/// prop8 description typename=PQName(
int prop8; segments=[FundamentalSpecifier(name="void")]
}; )
namespace Alpha ),
{ name=PQName(segments=[NameSpecifier(name="fn")]),
class AlphaClass parameters=[],
{ doxygen="/// member comment",
public: access="private",
AlphaClass(); )
],
void alphaMethod(); )
]
string alphaString; )
protected: )
typedef enum
{
Z_A,
Z_B = 0x2B,
Z_C = 'j',
Z_D,
} Zebra;
};
namespace Omega
{
class OmegaClass
{
public:
OmegaClass();
string omegaString;
protected:
///
/// @brief Rino Numbers, not that that means anything
///
typedef enum
{
RI_ZERO, /// item zero
RI_ONE, /** item one */
RI_TWO, //!< item two
RI_THREE,
/// item four
RI_FOUR,
} Rino;
};
};
}
"""
# def test_doxygen_messy(): def test_doxygen_class_template():
# content = """ content = """
# // clang-format off // clang-format off
/// template comment
template <typename T>
class C2 {};
"""
data = parse_string(content, cleandoc=True)
# /// fn comment assert data == ParsedData(
# void namespace=NamespaceScope(
# fn(); classes=[
ClassScope(
class_decl=ClassDecl(
typename=PQName(
segments=[NameSpecifier(name="C2")], classkey="class"
),
template=TemplateDecl(
params=[TemplateTypeParam(typekey="typename", name="T")]
),
doxygen="/// template comment",
)
)
]
)
)
# /// var comment
# int
# v1 = 0;
# int def test_doxygen_enum():
# v2 = 0; /// var2 comment content = """
// clang-format off
///
/// @brief Rino Numbers, not that that means anything
///
typedef enum
{
RI_ZERO, /// item zero
RI_ONE, /** item one */
RI_TWO, //!< item two
RI_THREE,
/// item four
RI_FOUR,
} Rino;
"""
data = parse_string(content, cleandoc=True)
# /// cls comment assert data == ParsedData(
# class namespace=NamespaceScope(
# C {}; enums=[
EnumDecl(
typename=PQName(segments=[AnonymousName(id=1)], classkey="enum"),
values=[
Enumerator(name="RI_ZERO", doxygen="/// item zero"),
Enumerator(name="RI_ONE", doxygen="/** item one */"),
Enumerator(name="RI_TWO", doxygen="//!< item two"),
Enumerator(name="RI_THREE"),
Enumerator(name="RI_FOUR", doxygen="/// item four"),
],
doxygen="///\n/// @brief Rino Numbers, not that that means anything\n///",
)
],
typedefs=[
Typedef(
type=Type(
typename=PQName(segments=[AnonymousName(id=1)], classkey="enum")
),
name="Rino",
)
],
)
)
# /// template comment
# template <typename T>
# class
# C2 {};
# """
# data = parse_string(content, cleandoc=True)
# assert data == ParsedData( def test_doxygen_fn_3slash():
# namespace=NamespaceScope( content = """
# classes=[ // clang-format off
# ClassScope(
# class_decl=ClassDecl( /// fn comment
# typename=PQName( void
# segments=[NameSpecifier(name="C")], classkey="class" fn();
# ),
# doxygen="/// cls comment", """
# ) data = parse_string(content, cleandoc=True)
# ),
# ClassScope( assert data == ParsedData(
# class_decl=ClassDecl( namespace=NamespaceScope(
# typename=PQName( functions=[
# segments=[NameSpecifier(name="C2")], classkey="class" Function(
# ), return_type=Type(
# template=TemplateDecl( typename=PQName(segments=[FundamentalSpecifier(name="void")])
# params=[TemplateTypeParam(typekey="typename", name="T")] ),
# ), name=PQName(segments=[NameSpecifier(name="fn")]),
# doxygen="/// template comment", parameters=[],
# ) doxygen="/// fn comment",
# ), )
# ], ]
# functions=[ )
# Function( )
# return_type=Type(
# typename=PQName(segments=[FundamentalSpecifier(name="void")])
# ), def test_doxygen_fn_cstyle():
# name=PQName(segments=[NameSpecifier(name="fn")]), content = """
# parameters=[], // clang-format off
# doxygen="/// fn comment",
# ) /**
# ], * fn comment
# variables=[ */
# Variable( void
# name=PQName(segments=[NameSpecifier(name="v1")]), fn();
# type=Type(
# typename=PQName(segments=[FundamentalSpecifier(name="int")]) """
# ), data = parse_string(content, cleandoc=True)
# value=Value(tokens=[Token(value="0")]),
# doxygen="/// var comment", assert data == ParsedData(
# ), namespace=NamespaceScope(
# Variable( functions=[
# name=PQName(segments=[NameSpecifier(name="v2")]), Function(
# type=Type( return_type=Type(
# typename=PQName(segments=[FundamentalSpecifier(name="int")]) typename=PQName(segments=[FundamentalSpecifier(name="void")])
# ), ),
# value=Value(tokens=[Token(value="0")]), name=PQName(segments=[NameSpecifier(name="fn")]),
# ), parameters=[],
# ], doxygen="/**\n* fn comment\n*/",
# ) )
# ) ]
)
)
def test_doxygen_var_above():
content = """
// clang-format off
/// var comment
int
v1 = 0;
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
variables=[
Variable(
name=PQName(segments=[NameSpecifier(name="v1")]),
type=Type(
typename=PQName(segments=[FundamentalSpecifier(name="int")])
),
value=Value(tokens=[Token(value="0")]),
doxygen="/// var comment",
)
]
)
)
def test_doxygen_var_after():
content = """
// clang-format off
int
v2 = 0; /// var2 comment
"""
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
variables=[
Variable(
name=PQName(segments=[NameSpecifier(name="v2")]),
type=Type(
typename=PQName(segments=[FundamentalSpecifier(name="int")])
),
value=Value(tokens=[Token(value="0")]),
doxygen="/// var2 comment",
)
]
)
)