Skip to content

Commit 475a615

Browse files
committed
[lldb-dap] add unit tests
1 parent e2c1810 commit 475a615

File tree

4 files changed

+116
-11
lines changed

4 files changed

+116
-11
lines changed

lldb/unittests/DAP/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ add_lldb_unittest(DAPTests
77
JSONUtilsTest.cpp
88
LLDBUtilsTest.cpp
99
ProtocolTypesTest.cpp
10+
ProtocolUtilsTest.cpp
1011
TestBase.cpp
1112
VariablesTest.cpp
1213

lldb/unittests/DAP/JSONUtilsTest.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -139,17 +139,6 @@ TEST(JSONUtilsTest, GetInteger_DifferentTypes) {
139139
EXPECT_EQ(result.value(), static_cast<int16_t>(789));
140140
}
141141

142-
TEST(JSONUtilsTest, CreateModule) {
143-
SBTarget target;
144-
SBModule module;
145-
146-
json::Value value = CreateModule(target, module);
147-
json::Object *object = value.getAsObject();
148-
149-
ASSERT_NE(object, nullptr);
150-
EXPECT_EQ(object->size(), 0UL);
151-
}
152-
153142
TEST(JSONUtilsTest, GetStrings_EmptyArray) {
154143
llvm::json::Object obj;
155144
obj.try_emplace("key", llvm::json::Array());

lldb/unittests/DAP/ProtocolTypesTest.cpp

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,3 +792,94 @@ TEST(ProtocolTypesTest, ReadMemoryResponseBody) {
792792
ASSERT_THAT_EXPECTED(expected, llvm::Succeeded());
793793
EXPECT_EQ(pp(*expected), pp(response));
794794
}
795+
796+
TEST(ProtocolTypesTest, Modules) {
797+
Module module;
798+
module.id = "AC805E8E-B6A4-CD92-4B05-5CFA7CE24AE8-8926C776";
799+
module.name = "libm.so.6";
800+
module.path = "/some/path/to/libm.so.6";
801+
module.isOptimized = false;
802+
module.isUserCode = true;
803+
module.version = "0.0.1";
804+
module.symbolStatus = "Symbol not found.";
805+
module.symbolFilePath = "/some/file/path/to/the/symbol/module";
806+
module.dateTimeStamp = "2020-12-09T16:09:53+00:00";
807+
module.addressRange = "0xcafeface";
808+
module.debugInfoSize = "1.2MB";
809+
810+
Expected<json::Value> expected = json::parse(
811+
R"({
812+
"id" : "AC805E8E-B6A4-CD92-4B05-5CFA7CE24AE8-8926C776",
813+
"name": "libm.so.6",
814+
"path": "/some/path/to/libm.so.6",
815+
"isOptimized": false,
816+
"isUserCode": true,
817+
"version": "0.0.1",
818+
"symbolStatus": "Symbol not found.",
819+
"symbolFilePath": "/some/file/path/to/the/symbol/module",
820+
"dateTimeStamp": "2020-12-09T16:09:53+00:00",
821+
"addressRange": "0xcafeface",
822+
"debugInfoSize": "1.2MB" })");
823+
ASSERT_THAT_EXPECTED(expected, llvm::Succeeded());
824+
EXPECT_EQ(pp(*expected), pp(module));
825+
826+
// Test without optional values.
827+
module.path.clear();
828+
module.isOptimized.reset();
829+
module.isUserCode.reset();
830+
module.version.clear();
831+
module.symbolStatus.clear();
832+
module.symbolFilePath.clear();
833+
module.dateTimeStamp.clear();
834+
module.addressRange.clear();
835+
module.debugInfoSize.clear();
836+
EXPECT_NE(pp(*expected), pp(module));
837+
838+
Expected<json::Value> expected_no_opt = json::parse(
839+
R"({
840+
"id" : "AC805E8E-B6A4-CD92-4B05-5CFA7CE24AE8-8926C776",
841+
"name": "libm.so.6"})");
842+
ASSERT_THAT_EXPECTED(expected_no_opt, llvm::Succeeded());
843+
EXPECT_EQ(pp(*expected_no_opt), pp(module));
844+
}
845+
846+
TEST(ProtocolTypesTest, ModulesArguments) {
847+
ModulesArguments args;
848+
849+
llvm::Expected<ModulesArguments> expected = parse<ModulesArguments>(R"({})");
850+
ASSERT_THAT_EXPECTED(expected, llvm::Succeeded());
851+
EXPECT_EQ(args.startModule, expected->startModule);
852+
EXPECT_EQ(args.moduleCount, expected->moduleCount);
853+
854+
// Non Default values.
855+
args.startModule = 1;
856+
args.moduleCount = 2;
857+
llvm::Expected<ModulesArguments> expected_no_default =
858+
parse<ModulesArguments>(R"({ "startModule": 1, "moduleCount": 2})");
859+
ASSERT_THAT_EXPECTED(expected_no_default, llvm::Succeeded());
860+
EXPECT_EQ(args.startModule, expected_no_default->startModule);
861+
EXPECT_EQ(args.moduleCount, expected_no_default->moduleCount);
862+
}
863+
864+
TEST(ProtocolTypesTest, ModulesResponseBody) {
865+
ModulesResponseBody response;
866+
Module module1;
867+
module1.id = "first id";
868+
module1.name = "first name";
869+
870+
Module module2;
871+
module2.id = "second id";
872+
module2.name = "second name";
873+
response.modules = {std::move(module1), std::move(module2)};
874+
response.totalModules = 2;
875+
876+
Expected<json::Value> expected = json::parse(
877+
R"({
878+
"modules": [
879+
{ "id": "first id", "name": "first name"},
880+
{ "id": "second id", "name": "second name"}
881+
],
882+
"totalModules": 2 })");
883+
ASSERT_THAT_EXPECTED(expected, llvm::Succeeded());
884+
EXPECT_EQ(pp(*expected), pp(response));
885+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//===-- ProtocolUtilsTest.cpp ---------------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "ProtocolUtils.h"
10+
#include "JSONUtils.h"
11+
#include "lldb/API/LLDB.h"
12+
#include "gtest/gtest.h"
13+
#include <optional>
14+
15+
using namespace lldb;
16+
using namespace lldb_dap;
17+
18+
TEST(ProtocolUtilsTest, CreateModule) {
19+
SBTarget target;
20+
SBModule module;
21+
22+
std::optional<protocol::Module> module_opt = CreateModule(target, module);
23+
EXPECT_EQ(module_opt, std::nullopt);
24+
}

0 commit comments

Comments
 (0)