diff options
Diffstat (limited to 'Tests/CMakeLib/testDebuggerVariablesManager.cxx')
-rw-r--r-- | Tests/CMakeLib/testDebuggerVariablesManager.cxx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Tests/CMakeLib/testDebuggerVariablesManager.cxx b/Tests/CMakeLib/testDebuggerVariablesManager.cxx new file mode 100644 index 0000000..3013b9f --- /dev/null +++ b/Tests/CMakeLib/testDebuggerVariablesManager.cxx @@ -0,0 +1,50 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ + +#include <functional> +#include <memory> +#include <vector> + +#include <cm3p/cppdap/protocol.h> +#include <cm3p/cppdap/types.h> +#include <stdint.h> + +#include "cmDebuggerVariables.h" +#include "cmDebuggerVariablesManager.h" + +#include "testCommon.h" + +static bool testVariablesRegistration() +{ + auto variablesManager = + std::make_shared<cmDebugger::cmDebuggerVariablesManager>(); + + int64_t line = 5; + auto local = std::make_shared<cmDebugger::cmDebuggerVariables>( + variablesManager, "Local", true, [=]() { + return std::vector<cmDebugger::cmDebuggerVariableEntry>{ { "CurrentLine", + line } }; + }); + + dap::VariablesRequest variableRequest; + variableRequest.variablesReference = local->GetId(); + + dap::array<dap::Variable> variables = + variablesManager->HandleVariablesRequest(variableRequest); + + ASSERT_TRUE(variables.size() == 1); + + local.reset(); + + variables = variablesManager->HandleVariablesRequest(variableRequest); + ASSERT_TRUE(variables.size() == 0); + + return true; +} + +int testDebuggerVariablesManager(int, char*[]) +{ + return runTests(std::vector<std::function<bool()>>{ + testVariablesRegistration, + }); +} |