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,91 +37,109 @@ from cxxheaderparser.simple import (
ParsedData, ParsedData,
) )
r"""
class SampleClass: public BaseSampleClass def test_doxygen_class():
{ content = """
public: // clang-format off
enum Elephant
{ /// cls comment
EL_ONE = 1, class
EL_TWO = 2, C {
EL_NINE = 9, /// member comment
EL_TEN, void fn();
/// var above
int var_above;
int var_after; /// var after
}; };
"""
data = parse_string(content, cleandoc=True)
SampleClass(); assert data == ParsedData(
/*! namespace=NamespaceScope(
* Method 1 classes=[
*/ ClassScope(
string meth1(); class_decl=ClassDecl(
typename=PQName(
segments=[NameSpecifier(name="C")], classkey="class"
),
doxygen="/// cls comment",
),
fields=[
Field(
access="private",
type=Type(
typename=PQName(
segments=[FundamentalSpecifier(name="int")]
)
),
name="var_above",
doxygen="/// var above",
),
Field(
access="private",
type=Type(
typename=PQName(
segments=[FundamentalSpecifier(name="int")]
)
),
name="var_after",
doxygen="/// var after",
),
],
methods=[
Method(
return_type=Type(
typename=PQName(
segments=[FundamentalSpecifier(name="void")]
)
),
name=PQName(segments=[NameSpecifier(name="fn")]),
parameters=[],
doxygen="/// member comment",
access="private",
)
],
)
]
)
)
///
/// Method 2 description
///
/// @param v1 Variable 1
///
int meth2(int v1);
/** def test_doxygen_class_template():
* Method 3 description content = """
* // clang-format off
* \param v1 Variable 1 with a really long
* wrapping description
* \param v2 Variable 2
*/
void meth3(const string & v1, vector<string> & v2);
/********************************** /// template comment
* Method 4 description template <typename T>
* class C2 {};
* @return Return value """
*********************************/ data = parse_string(content, cleandoc=True)
unsigned int meth4();
private:
void * meth5(){return NULL;}
/// prop1 description assert data == ParsedData(
string prop1; namespace=NamespaceScope(
//! prop5 description classes=[
int prop5; ClassScope(
class_decl=ClassDecl(
typename=PQName(
segments=[NameSpecifier(name="C2")], classkey="class"
),
template=TemplateDecl(
params=[TemplateTypeParam(typekey="typename", name="T")]
),
doxygen="/// template comment",
)
)
]
)
)
bool prop6; /*!< prop6 description */
double prop7; //!< prop7 description def test_doxygen_enum():
//!< with two lines content = """
// clang-format off
/// prop8 description
int prop8;
};
namespace Alpha
{
class AlphaClass
{
public:
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 /// @brief Rino Numbers, not that that means anything
/// ///
@ -134,88 +152,141 @@ namespace Alpha
/// item four /// item four
RI_FOUR, RI_FOUR,
} Rino; } Rino;
}; """
}; data = parse_string(content, cleandoc=True)
}
assert data == ParsedData(
namespace=NamespaceScope(
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",
)
],
)
)
def test_doxygen_fn_3slash():
content = """
// clang-format off
/// fn comment
void
fn();
""" """
data = parse_string(content, cleandoc=True)
assert data == ParsedData(
namespace=NamespaceScope(
functions=[
Function(
return_type=Type(
typename=PQName(segments=[FundamentalSpecifier(name="void")])
),
name=PQName(segments=[NameSpecifier(name="fn")]),
parameters=[],
doxygen="/// fn comment",
)
]
)
)
# def test_doxygen_messy(): def test_doxygen_fn_cstyle():
# content = """ content = """
# // clang-format off // clang-format off
# /// fn comment /**
# void * fn comment
# fn(); */
void
fn();
# /// var comment """
# int data = parse_string(content, cleandoc=True)
# v1 = 0;
# int assert data == ParsedData(
# v2 = 0; /// var2 comment namespace=NamespaceScope(
functions=[
Function(
return_type=Type(
typename=PQName(segments=[FundamentalSpecifier(name="void")])
),
name=PQName(segments=[NameSpecifier(name="fn")]),
parameters=[],
doxygen="/**\n* fn comment\n*/",
)
]
)
)
# /// cls comment
# class
# C {};
# /// template comment def test_doxygen_var_above():
# template <typename T> content = """
# class // clang-format off
# C2 {};
# """
# data = parse_string(content, cleandoc=True)
# assert data == ParsedData(
# namespace=NamespaceScope( /// var comment
# classes=[ int
# ClassScope( v1 = 0;
# class_decl=ClassDecl(
# typename=PQName(
# segments=[NameSpecifier(name="C")], classkey="class" """
# ), data = parse_string(content, cleandoc=True)
# doxygen="/// cls comment",
# ) assert data == ParsedData(
# ), namespace=NamespaceScope(
# ClassScope( variables=[
# class_decl=ClassDecl( Variable(
# typename=PQName( name=PQName(segments=[NameSpecifier(name="v1")]),
# segments=[NameSpecifier(name="C2")], classkey="class" type=Type(
# ), typename=PQName(segments=[FundamentalSpecifier(name="int")])
# template=TemplateDecl( ),
# params=[TemplateTypeParam(typekey="typename", name="T")] value=Value(tokens=[Token(value="0")]),
# ), doxygen="/// var comment",
# doxygen="/// template comment", )
# ) ]
# ), )
# ], )
# functions=[
# Function(
# return_type=Type( def test_doxygen_var_after():
# typename=PQName(segments=[FundamentalSpecifier(name="void")]) content = """
# ), // clang-format off
# name=PQName(segments=[NameSpecifier(name="fn")]),
# parameters=[], int
# doxygen="/// fn comment", v2 = 0; /// var2 comment
# ) """
# ], data = parse_string(content, cleandoc=True)
# variables=[
# Variable( assert data == ParsedData(
# name=PQName(segments=[NameSpecifier(name="v1")]), namespace=NamespaceScope(
# type=Type( variables=[
# typename=PQName(segments=[FundamentalSpecifier(name="int")]) Variable(
# ), name=PQName(segments=[NameSpecifier(name="v2")]),
# value=Value(tokens=[Token(value="0")]), type=Type(
# doxygen="/// var comment", typename=PQName(segments=[FundamentalSpecifier(name="int")])
# ), ),
# Variable( value=Value(tokens=[Token(value="0")]),
# name=PQName(segments=[NameSpecifier(name="v2")]), doxygen="/// var2 comment",
# type=Type( )
# typename=PQName(segments=[FundamentalSpecifier(name="int")]) ]
# ), )
# value=Value(tokens=[Token(value="0")]), )
# ),
# ],
# )
# )