Add new test doxygen_basic_translate_style3.i

This is used to test the "///" style of doxygen comments.  Previously,
newlines in these doxygen comments were not handled correctly.
This commit is contained in:
John McFarland 2019-10-30 18:39:23 -05:00
commit feea39f352
4 changed files with 279 additions and 0 deletions

View file

@ -622,6 +622,7 @@ DOXYGEN_TEST_CASES += \
doxygen_basic_notranslate \
doxygen_basic_translate \
doxygen_basic_translate_style2 \
doxygen_basic_translate_style3 \
doxygen_ignore \
doxygen_misc_constructs \
doxygen_nested_class \

View file

@ -0,0 +1,95 @@
%module doxygen_basic_translate_style3
%include "doxygen_basic_translate.h"
%inline %{
/// \brief
/// Brief description.
///
/// The comment text.
///
/// \author Some author
///
/// \return Some number
///
/// \sa function2
int function()
{
return 0;
}
/// A test of a very very very very very very very very very very very very very very very very
/// very very very very very long comment string.
void function2()
{
}
/// A test for overloaded functions
/// This is function \b one
void function3(int a)
{
}
/// A test for overloaded functions
/// This is function \b two
void function3(int a, int b)
{
}
/// A test of some mixed tag usage
/// \if CONDITION
/// This \a code fragment shows us something \.
/// \par Minuses:
/// \arg it's senseless
/// \arg it's stupid
/// \arg it's null
///
/// \warning This may not work as expected
/// \code
/// int main() { while(true); }
///
/// // Test blank line in code block
/// \endcode
/// \endif
void function4()
{
}
void function5(int a)
{
}
///< This is a post comment.
/// Test for default args
/// @param a Some parameter, default is 42
void function6(int a=42)
{
}
class Shape
{
public:
typedef Shape* superType;
};
/// Test for a parameter with difficult type
/// (mostly for python)
/// @param a Very strange param
void function7(Shape::superType *a[10])
{
}
/// Multiple parameters test.
///
/// @param y Vertical coordinate.
/// @param x Horizontal coordinate.
/// @return Arc tangent of @c y/x.
double Atan2(double y, double x)
{
return 0;
}
/// Comment at the end of file should be ignored.
%}

View file

@ -0,0 +1,101 @@
import doxygen_basic_translate_style3.*;
import com.sun.javadoc.*;
import java.util.HashMap;
public class doxygen_basic_translate_style3_runme {
static {
try {
System.loadLibrary("doxygen_basic_translate_style3");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
System.exit(1);
}
}
public static void main(String argv[])
{
/*
Here we are using internal javadoc tool, it accepts the name of the class as paramterer,
and calls the start() method of that class with parsed information.
*/
CommentParser parser = new CommentParser();
com.sun.tools.javadoc.Main.execute("doxygen_basic_translate_style3 runtime test",
"CommentParser",
new String[]{"-quiet", "doxygen_basic_translate_style3"});
HashMap<String, String> wantedComments = new HashMap<String, String>();
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function()",
" \n" +
" Brief description.\n" +
" \n" +
" The comment text.\n" +
" @author Some author\n" +
" @return Some number\n" +
" @see function2\n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function2()",
" A test of a very very very very very very very very very very very very very very very very \n" +
" very very very very very long comment string. \n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function4()",
" A test of some mixed tag usage \n" +
" If: CONDITION {\n" +
" This <i>code </i>fragment shows us something . \n" +
" <p alt=\"Minuses: \">\n" +
" <li>it's senseless \n" +
" </li><li>it's stupid \n" +
" </li><li>it's null \n" +
" \n" +
" </li></p>Warning: This may not work as expected \n" +
" \n" +
" {@code \n" +
"int main() { while(true); } \n" +
"\n" +
"// Test blank line in code block \n" +
" }\n" +
" }\n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function3(int)",
" A test for overloaded functions \n" +
" This is function <b>one </b>\n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function5(int)",
" This is a post comment. \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function6(int)",
" Test for default args \n" +
" @param a Some parameter, default is 42" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function6()",
" Test for default args \n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function7(doxygen_basic_translate_style3.SWIGTYPE_p_p_p_Shape)",
" Test for a parameter with difficult type \n" +
" (mostly for python) \n" +
" @param a Very strange param \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.function3(int, int)",
" A test for overloaded functions \n" +
" This is function <b>two </b>\n" +
" \n" +
"");
wantedComments.put("doxygen_basic_translate_style3.doxygen_basic_translate_style3.Atan2(double, double)",
" Multiple parameters test.\n" +
" \n" +
" @param y Vertical coordinate.\n" +
" @param x Horizontal coordinate.\n" +
" @return Arc tangent of <code>y/x</code>.\n" +
"");
// and ask the parser to check comments for us
System.exit(parser.check(wantedComments));
}
}

View file

@ -0,0 +1,82 @@
import doxygen_basic_translate_style3
import inspect
import string
import sys
import comment_verifier
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function),
"""\
Brief description.
The comment text.
Author: Some author
:rtype: int
:return: Some number
See also: function2"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function2),
"""\
A test of a very very very very very very very very very very very very very very very very
very very very very very long comment string."""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function3),
"""*Overload 1:*
A test for overloaded functions
This is function **one**
|
*Overload 2:*
A test for overloaded functions
This is function **two**"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function4),
"""\
A test of some mixed tag usage
If: CONDITION {
This *code* fragment shows us something .
Title: Minuses:
* it\'s senseless
* it\'s stupid
* it\'s null
Warning: This may not work as expected
.. code-block:: c++
int main() { while(true); }
// Test blank line in code block
}"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function5),
"""This is a post comment."""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function6),
"""\
Test for default args
:type a: int
:param a: Some parameter, default is 42"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.function7),
"""\
Test for a parameter with difficult type
(mostly for python)
:type a: :py:class:`Shape`
:param a: Very strange param"""
)
comment_verifier.check(inspect.getdoc(doxygen_basic_translate_style3.Atan2),
"""\
Multiple parameters test.
:type y: float
:param y: Vertical coordinate.
:type x: float
:param x: Horizontal coordinate.
:rtype: float
:return: Arc tangent of ``y/x``."""
)