|
|
@@ -2,6 +2,7 @@
|
|
|
#include <string>
|
|
|
#include <vector>
|
|
|
|
|
|
+#include <cm3p/cppdap/optional.h>
|
|
|
#include <cm3p/cppdap/protocol.h>
|
|
|
#include <cm3p/cppdap/types.h>
|
|
|
|
|
|
@@ -10,21 +11,52 @@
|
|
|
|
|
|
#include "testCommon.h"
|
|
|
|
|
|
-static bool testStackFrameFunctionName()
|
|
|
+static bool testStackFrameFunctionName(
|
|
|
+ dap::optional<dap::StackFrameFormat> format, const char* expectedName)
|
|
|
{
|
|
|
auto thread = std::make_shared<cmDebugger::cmDebuggerThread>(0, "name");
|
|
|
const auto* functionName = "function_name";
|
|
|
- auto arguments = std::vector<cmListFileArgument>{};
|
|
|
+ auto arguments = std::vector<cmListFileArgument>{ cmListFileArgument(
|
|
|
+ "arg", cmListFileArgument::Delimiter::Unquoted, 0) };
|
|
|
cmListFileFunction func(functionName, 10, 20, arguments);
|
|
|
thread->PushStackFrame(nullptr, "CMakeLists.txt", func);
|
|
|
|
|
|
- auto stackTrace = GetStackTraceResponse(thread);
|
|
|
+ auto stackTrace = GetStackTraceResponse(thread, format);
|
|
|
|
|
|
- ASSERT_TRUE(stackTrace.stackFrames[0].name == functionName);
|
|
|
+ ASSERT_TRUE(stackTrace.stackFrames[0].name == expectedName);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool testStackFrameNoFormatting()
|
|
|
+{
|
|
|
+ return testStackFrameFunctionName({}, "function_name");
|
|
|
+}
|
|
|
+
|
|
|
+bool testStackFrameFormatParameters()
|
|
|
+{
|
|
|
+ dap::StackFrameFormat format;
|
|
|
+ format.parameters = true;
|
|
|
+ return testStackFrameFunctionName(format, "function_name()");
|
|
|
+}
|
|
|
+
|
|
|
+bool testStackFrameFormatParameterValues()
|
|
|
+{
|
|
|
+ dap::StackFrameFormat format;
|
|
|
+ format.parameters = true;
|
|
|
+ format.parameterValues = true;
|
|
|
+ return testStackFrameFunctionName(format, "function_name(arg)");
|
|
|
+}
|
|
|
+
|
|
|
+bool testStackFrameFormatLine()
|
|
|
+{
|
|
|
+ dap::StackFrameFormat format;
|
|
|
+ format.line = true;
|
|
|
+ return testStackFrameFunctionName(format, "function_name Line: 10");
|
|
|
+}
|
|
|
+
|
|
|
int testDebuggerThread(int, char*[])
|
|
|
{
|
|
|
- return runTests({ testStackFrameFunctionName });
|
|
|
+ return runTests({ testStackFrameNoFormatting, testStackFrameFormatParameters,
|
|
|
+ testStackFrameFormatParameterValues,
|
|
|
+ testStackFrameFormatLine });
|
|
|
}
|