[Lldb-commits] [lldb] [lldb-dap] Add unit tests for protocol types (PR #139502)
John Harrison via lldb-commits
lldb-commits at lists.llvm.org
Mon May 12 09:18:47 PDT 2025
================
@@ -0,0 +1,268 @@
+//===-- ProtocolTypesTest.cpp -----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "Protocol/ProtocolTypes.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+using namespace lldb;
+using namespace lldb_dap;
+using namespace lldb_dap::protocol;
+
+TEST(ProtocolTypesTest, ExceptionBreakpointsFilter) {
+ ExceptionBreakpointsFilter filter;
+ filter.filter = "testFilter";
+ filter.label = "Test Filter";
+ filter.description = "This is a test filter";
+ filter.defaultState = true;
+ filter.supportsCondition = true;
+ filter.conditionDescription = "Condition for test filter";
+
+ llvm::json::Value value = toJSON(filter);
+ const json::Object *obj = value.getAsObject();
+ ASSERT_NE(obj, nullptr);
+
+ EXPECT_EQ(obj->getString("filter"), "testFilter");
+ EXPECT_EQ(obj->getString("label"), "Test Filter");
+ EXPECT_EQ(obj->getString("description"), "This is a test filter");
+ EXPECT_EQ(obj->getBoolean("default"), true);
+ EXPECT_EQ(obj->getBoolean("supportsCondition"), true);
+ EXPECT_EQ(obj->getString("conditionDescription"),
+ "Condition for test filter");
----------------
ashgti wrote:
Should we make a helper for matching these with a string literal? Something like:
```
MATCHER_P(equalToDAP, msg,
"Protocol Message " + llvm::to_string(msg)) {
if (toJSON(arg) != json::parse(msg)) {
*result_listener << llvm::formatv("expected:\n{0:2}\ngot\n{1:2}",
toJSON(msg), toJSON(arg))
.str();
return false;
}
return true;
}
```
And then use:
```
EXPECT_THAT(filter, equalToDAP(R"json({"filter": "testFilter",...})json"));
```
I think that might help improve the brevity of these tests and help account for some additional fields or defaults that may appear in some structs.
We might be able to make the test case into a `vector<pair<protocol::Message, string>>` to make it easier to add cases as well.
https://github.com/llvm/llvm-project/pull/139502
More information about the lldb-commits
mailing list