From feea39f3524470a2c28d425332bf4e921f9c435e Mon Sep 17 00:00:00 2001 From: John McFarland Date: Wed, 30 Oct 2019 18:39:23 -0500 Subject: [PATCH] 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. --- Examples/test-suite/common.mk | 1 + .../doxygen_basic_translate_style3.i | 95 ++++++++++++++++ .../doxygen_basic_translate_style3_runme.java | 101 ++++++++++++++++++ .../doxygen_basic_translate_style3_runme.py | 82 ++++++++++++++ 4 files changed, 279 insertions(+) create mode 100644 Examples/test-suite/doxygen_basic_translate_style3.i create mode 100644 Examples/test-suite/java/doxygen_basic_translate_style3_runme.java create mode 100644 Examples/test-suite/python/doxygen_basic_translate_style3_runme.py diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 5f7792810..25a0d8e08 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -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 \ diff --git a/Examples/test-suite/doxygen_basic_translate_style3.i b/Examples/test-suite/doxygen_basic_translate_style3.i new file mode 100644 index 000000000..5222cfb6f --- /dev/null +++ b/Examples/test-suite/doxygen_basic_translate_style3.i @@ -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. +%} diff --git a/Examples/test-suite/java/doxygen_basic_translate_style3_runme.java b/Examples/test-suite/java/doxygen_basic_translate_style3_runme.java new file mode 100644 index 000000000..af74c4f03 --- /dev/null +++ b/Examples/test-suite/java/doxygen_basic_translate_style3_runme.java @@ -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 wantedComments = new HashMap(); + + 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 code fragment shows us something . \n" + + "

\n" + + "

  • it's senseless \n" + + "
  • it's stupid \n" + + "
  • it's null \n" + + " \n" + + "
  • 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 one \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 two \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 y/x.\n" + + ""); + + // and ask the parser to check comments for us + System.exit(parser.check(wantedComments)); + } +} diff --git a/Examples/test-suite/python/doxygen_basic_translate_style3_runme.py b/Examples/test-suite/python/doxygen_basic_translate_style3_runme.py new file mode 100644 index 000000000..dc513d2e0 --- /dev/null +++ b/Examples/test-suite/python/doxygen_basic_translate_style3_runme.py @@ -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``.""" +)