Implemented missing runtime tests
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2012-doxygen@13635 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
393ffd09da
commit
3ca3848464
5 changed files with 295 additions and 29 deletions
|
|
@ -193,6 +193,7 @@ CPP_TEST_CASES += \
|
||||||
doxygen_translate \
|
doxygen_translate \
|
||||||
doxygen_translate_all_tags \
|
doxygen_translate_all_tags \
|
||||||
doxygen_translate_links \
|
doxygen_translate_links \
|
||||||
|
doxygen_tricky_constructs \
|
||||||
dynamic_cast \
|
dynamic_cast \
|
||||||
empty \
|
empty \
|
||||||
enum_rename \
|
enum_rename \
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
|
|
||||||
# Bug 1: Tag '@endink' is not recognized becuse it is not
|
// Bug 1: Tag '@endink' is not recognized becuse it is not
|
||||||
# followed by whitespace.
|
// followed by whitespace.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tag endlink must be recognized also when followed by nonspace charater.
|
* Tag endlink must be recognized also when followed by nonspace charater.
|
||||||
|
|
@ -26,13 +26,13 @@
|
||||||
int g_zipCode;
|
int g_zipCode;
|
||||||
|
|
||||||
|
|
||||||
# Bug 2: Paramter 'isReportSize' is missing in comment of the overload, which
|
// Bug 2: Paramter 'isReportSize' is missing in comment of the overload, which
|
||||||
# has it. This bug disappears if @endlink is follwed by a space.
|
// has it. This bug disappears if @endlink is follwed by a space.
|
||||||
#
|
//
|
||||||
# Bug 3: Empty line before the link is missing,
|
// Bug 3: Empty line before the link is missing,
|
||||||
# making the link text part of parameter description. This bug appears also
|
// making the link text part of parameter description. This bug appears also
|
||||||
# when there is ordinary text in place of the link in case of overload
|
// when there is ordinary text in place of the link in case of overload
|
||||||
# with only 2 parameters.
|
// with only 2 parameters.
|
||||||
/**
|
/**
|
||||||
* Returns address of file line.
|
* Returns address of file line.
|
||||||
*
|
*
|
||||||
|
|
@ -42,12 +42,14 @@
|
||||||
*
|
*
|
||||||
* @link Connection::getId() @endlink <br>
|
* @link Connection::getId() @endlink <br>
|
||||||
*/
|
*/
|
||||||
std::vector<DWORD> getAddress(const std::string &fileName,
|
void getAddress(int &fileName,
|
||||||
int line,
|
int line,
|
||||||
bool isGetSize = false);
|
bool isGetSize = false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
# Bug 4: The first comment is attached to the second in Python (wrong),
|
// Bug 4: The first comment is attached to the second in Python (wrong),
|
||||||
# but not in Java (correct).
|
// but not in Java (correct).
|
||||||
/**
|
/**
|
||||||
* \defgroup icFacade isystem.connect Facade
|
* \defgroup icFacade isystem.connect Facade
|
||||||
*
|
*
|
||||||
|
|
@ -73,34 +75,38 @@
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
# Bug 5: Text after '\c' has no space following in Python.
|
// Bug 5: Text after '\c' has no space following in Python.
|
||||||
# There are also to many empty lines in multiline comments in Python.
|
// There are also to many empty lines in multiline comments in Python.
|
||||||
# Whitespaces are really a problem in Python (space and newlines),
|
// Whitespaces are really a problem in Python (space and newlines),
|
||||||
# I like a parameter type added to each parameter description!
|
// I like a parameter type added to each parameter description!
|
||||||
# """
|
// """
|
||||||
# Determines how long the isystem.connectshould wait for running
|
// Determines how long the isystem.connectshould wait for running
|
||||||
#
|
//
|
||||||
# instances to respond. Only one of lfWaitXXXflags from IConnect::ELaunchFlags
|
// instances to respond. Only one of lfWaitXXXflags from IConnect::ELaunchFlags
|
||||||
#
|
//
|
||||||
# may be specified.
|
// may be specified.
|
||||||
#
|
//
|
||||||
# """
|
// """
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines how long the \c isystem.connect should wait for running
|
* Determines how long the \c isystem.connect should wait for running
|
||||||
* instances to respond. Only one of \c lfWaitXXX flags from IConnect::ELaunchFlags
|
* instances to respond. Only one of \c lfWaitXXX flags from IConnect::ELaunchFlags
|
||||||
* may be specified.
|
* may be specified.
|
||||||
*/
|
*/
|
||||||
int waitTime(long waitTime);
|
int waitTime(long waitTime)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Bug 6: Text after tag \ingroup appears in Python comment (empty line in
|
// Bug 6: Text after tag \ingroup appears in Python comment (empty line in
|
||||||
# Java, which is acceptable):
|
// Java, which is acceptable):
|
||||||
/** \ingroup icFacade
|
/** \ingroup icFacade
|
||||||
*
|
*
|
||||||
* This class manages connection.
|
* This class manages connection.
|
||||||
*/
|
*/
|
||||||
int getConnection();
|
int getConnection()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
100
Examples/test-suite/java/doxygen_basic_notranslate_runme.java
Normal file
100
Examples/test-suite/java/doxygen_basic_notranslate_runme.java
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
|
||||||
|
import doxygen_basic_notranslate.*;
|
||||||
|
import com.sun.javadoc.*;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class doxygen_basic_notranslate_runme {
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
System.loadLibrary("doxygen_basic_notranslate");
|
||||||
|
} 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_notranslate runtime test",
|
||||||
|
"commentParser", new String[]{"-quiet", "doxygen_basic_notranslate"});
|
||||||
|
|
||||||
|
HashMap<String, String> wantedComments = new HashMap<String, String>();
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function3(int)",
|
||||||
|
" \n" +
|
||||||
|
" A test for overloaded functions\n" +
|
||||||
|
" This is function \\b one\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function4()",
|
||||||
|
" \n" +
|
||||||
|
" A test of some mixed tag usage\n" +
|
||||||
|
" \\if CONDITION\n" +
|
||||||
|
" This \\a code fragment shows us something \\.\n" +
|
||||||
|
" \\par Minuses:\n" +
|
||||||
|
" \\arg it's senseless\n" +
|
||||||
|
" \\arg it's stupid\n" +
|
||||||
|
" \\arg it's null\n" +
|
||||||
|
" \n" +
|
||||||
|
" \\warning This may not work as expected\n" +
|
||||||
|
" \n" +
|
||||||
|
" \\code\n" +
|
||||||
|
" int main() { while(true); }\n" +
|
||||||
|
" \\endcode\n" +
|
||||||
|
" \\endif\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function()",
|
||||||
|
" \n" +
|
||||||
|
" \\brief\n" +
|
||||||
|
" Brief description.\n" +
|
||||||
|
" \n" +
|
||||||
|
" The comment text\n" +
|
||||||
|
" \\author Some author\n" +
|
||||||
|
" \\return Some number\n" +
|
||||||
|
" \\sa function2\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function5(int)",
|
||||||
|
" This is a post comment. \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function7(doxygen_basic_notranslate.SWIGTYPE_p_p_p_Shape)",
|
||||||
|
" \n" +
|
||||||
|
" Test for a parameter with difficult type\n" +
|
||||||
|
" (mostly for python)\n" +
|
||||||
|
" @param a Very strange param\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function3(int, int)",
|
||||||
|
" \n" +
|
||||||
|
" A test for overloaded functions\n" +
|
||||||
|
" This is function \\b two\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function6(int)",
|
||||||
|
" \n" +
|
||||||
|
" Test for default args\n" +
|
||||||
|
" @param a Some parameter, default is 42\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function6()",
|
||||||
|
" \n" +
|
||||||
|
" Test for default args\n" +
|
||||||
|
" @param a Some parameter, default is 42\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_basic_notranslate.doxygen_basic_notranslate.function2()",
|
||||||
|
" \n" +
|
||||||
|
" 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" +
|
||||||
|
"");
|
||||||
|
|
||||||
|
// and ask the parser to check comments for us
|
||||||
|
System.exit(parser.check(wantedComments));
|
||||||
|
}
|
||||||
|
}
|
||||||
105
Examples/test-suite/java/doxygen_tricky_constructs_runme.java
Normal file
105
Examples/test-suite/java/doxygen_tricky_constructs_runme.java
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
|
||||||
|
import doxygen_tricky_constructs.*;
|
||||||
|
import com.sun.javadoc.*;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class doxygen_tricky_constructs_runme {
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
System.loadLibrary("doxygen_tricky_constructs");
|
||||||
|
} 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_tricky_constructs runtime test",
|
||||||
|
"commentParser", new String[]{"-quiet", "doxygen_tricky_constructs"});
|
||||||
|
|
||||||
|
HashMap<String, String> wantedComments = new HashMap<String, String>();
|
||||||
|
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.getConnection()",
|
||||||
|
" \n" +
|
||||||
|
" \n" +
|
||||||
|
" This class manages connection. \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.getAddress(doxygen_tricky_constructs.SWIGTYPE_p_int, int)",
|
||||||
|
" Returns address of file line. \n" +
|
||||||
|
" \n" +
|
||||||
|
" @param fileName name of the file, where the source line is located \n" +
|
||||||
|
" @param line line number \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.getG_zipCode()",
|
||||||
|
" Tag endlink must be recognized also when it is the last token \n" +
|
||||||
|
" in the commment. \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" {@link debugIdeTraceProfilerCoverageSample.py Python example. }\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.setG_zipCode(int)",
|
||||||
|
" Tag endlink must be recognized also when it is the last token \n" +
|
||||||
|
" in the commment. \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" {@link debugIdeTraceProfilerCoverageSample.py Python example. }\n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.getG_counter()",
|
||||||
|
" Tag endlink must be recognized also when followed by nonspace charater. \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.waitTime(int)",
|
||||||
|
" Determines how long the <code>isystem.connect</code> should wait for running \n" +
|
||||||
|
" instances to respond. Only one of <code>lfWaitXXX</code> flags from IConnect::ELaunchFlags \n" +
|
||||||
|
" may be specified. \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.CConnectionConfig",
|
||||||
|
" This class contains information for connection to winIDEA. Its methods \n" +
|
||||||
|
" return reference to self, so we can use it like this: \n" +
|
||||||
|
" <pre> \n" +
|
||||||
|
" CConnectionConfig config = new CConnectionConfig(); \n" +
|
||||||
|
" config.discoveryPort(5534).dllPath(\"C: \\ yWinIDEA \\ onnect.dll\").id(\"main\"); \n" +
|
||||||
|
" </pre> \n" +
|
||||||
|
" \n" +
|
||||||
|
" All parameters are optional. Set only what is required, default values are \n" +
|
||||||
|
" used for unspecified parameters. \n" +
|
||||||
|
" <p> \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link advancedWinIDEALaunching.py Python example. }<br> \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.getAddress(doxygen_tricky_constructs.SWIGTYPE_p_int, int, boolean)",
|
||||||
|
" Returns address of file line. \n" +
|
||||||
|
" \n" +
|
||||||
|
" @param fileName name of the file, where the source line is located \n" +
|
||||||
|
" @param line line number \n" +
|
||||||
|
" @param isGetSize if set, for every object location both address and size are returned \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
wantedComments.put("doxygen_tricky_constructs.doxygen_tricky_constructs.setG_counter(char)",
|
||||||
|
" Tag endlink must be recognized also when followed by nonspace charater. \n" +
|
||||||
|
" \n" +
|
||||||
|
" {@link Connection::getId() }<br> \n" +
|
||||||
|
" \n" +
|
||||||
|
"");
|
||||||
|
|
||||||
|
// and ask the parser to check comments for us
|
||||||
|
System.exit(parser.check(wantedComments));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import doxygen_tricky_constructs
|
||||||
|
import string
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def check(got, expected):
|
||||||
|
#if got is Null
|
||||||
|
# raise RuntimeError('Expected comment string\n')
|
||||||
|
gotStr = string.replace(got, ' ', '')
|
||||||
|
gotStr = string.replace(gotStr, '\n', '')
|
||||||
|
gotStr = string.replace(gotStr, '\t', '')
|
||||||
|
expectedStr = string.replace(expected, ' ', '')
|
||||||
|
expectedStr = string.replace(expectedStr, '\n', '')
|
||||||
|
expectedStr = string.replace(expectedStr, '\t', '')
|
||||||
|
if not gotStr == expectedStr:
|
||||||
|
raise RuntimeError("Expected: [" + str(expected) + "]\n" + "Got : [" + str(got) + "]\n")
|
||||||
|
|
||||||
|
check(doxygen_tricky_constructs.getAddress.__doc__, ''
|
||||||
|
'Returns address of file line.'
|
||||||
|
''
|
||||||
|
' Arguments:'
|
||||||
|
' fileName (int &) -- name of the file, where the source'
|
||||||
|
' line is located'
|
||||||
|
' line (int) -- line number'
|
||||||
|
' isGetSize (bool) -- if set, for every object location'
|
||||||
|
' both address and size are returned'
|
||||||
|
''
|
||||||
|
''
|
||||||
|
' Connection::getId() <br>'
|
||||||
|
)
|
||||||
|
check(doxygen_tricky_constructs.CConnectionConfig.__doc__, ''
|
||||||
|
' This class contains information for connection to winIDEA. Its methods'
|
||||||
|
' return reference to self, so we can use it like this:'
|
||||||
|
' <pre>'
|
||||||
|
' CConnectionConfig config = new CConnectionConfig();'
|
||||||
|
' config.discoveryPort(5534).dllPath("C: \yWinIDEA \onnect.dll").id("main");'
|
||||||
|
' </pre>'
|
||||||
|
''
|
||||||
|
' All parameters are optional. Set only what is required, default values are'
|
||||||
|
' used for unspecified parameters.'
|
||||||
|
' <p>'
|
||||||
|
''
|
||||||
|
' advancedWinIDEALaunching.py Python example. <br>'
|
||||||
|
''
|
||||||
|
)
|
||||||
|
check(doxygen_tricky_constructs.waitTime.__doc__, ''
|
||||||
|
' Determines how long the isystem.connect should wait for running'
|
||||||
|
' instances to respond. Only one of lfWaitXXX flags from IConnect::ELaunchFlags'
|
||||||
|
' may be specified.'
|
||||||
|
)
|
||||||
|
check(doxygen_tricky_constructs.getConnection.__doc__, ''
|
||||||
|
'This class manages connection.'
|
||||||
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue