summaryrefslogtreecommitdiffstats
path: root/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp')
-rw-r--r--lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp b/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp
new file mode 100644
index 00000000000..a73f7b462a8
--- /dev/null
+++ b/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp
@@ -0,0 +1,73 @@
+//===-- GDBRemoteCommunicationServerTest.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 "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+#include "GDBRemoteTestUtils.h"
+
+#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h"
+#include "lldb/Utility/Connection.h"
+
+namespace lldb_private {
+namespace process_gdb_remote {
+
+TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_ErrorNumber) {
+ MockServerWithMockConnection server;
+ server.SendErrorResponse(0x42);
+
+ EXPECT_THAT(server.GetPackets(), testing::ElementsAre("$E42#ab"));
+}
+
+TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_Status) {
+ MockServerWithMockConnection server;
+ Status status;
+
+ status.SetError(0x42, lldb::eErrorTypeGeneric);
+ status.SetErrorString("Test error message");
+ server.SendErrorResponse(status);
+
+ EXPECT_THAT(
+ server.GetPackets(),
+ testing::ElementsAre("$E42;54657374206572726f72206d657373616765#ad"));
+}
+
+TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_UnimplementedError) {
+ MockServerWithMockConnection server;
+
+ auto error =
+ llvm::make_error<PacketUnimplementedError>("Test unimplemented error");
+ server.SendErrorResponse(std::move(error));
+
+ EXPECT_THAT(server.GetPackets(), testing::ElementsAre("$#00"));
+}
+
+TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_StringError) {
+ MockServerWithMockConnection server;
+
+ auto error = llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "String error test");
+ server.SendErrorResponse(std::move(error));
+
+ EXPECT_THAT(
+ server.GetPackets(),
+ testing::ElementsAre("$Eff;537472696e67206572726f722074657374#b0"));
+}
+
+TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_ErrorList) {
+ MockServerWithMockConnection server;
+
+ auto error = llvm::joinErrors(llvm::make_error<PacketUnimplementedError>(),
+ llvm::make_error<PacketUnimplementedError>());
+
+ server.SendErrorResponse(std::move(error));
+ // Make sure only one packet is sent even when there are multiple errors.
+ EXPECT_EQ(server.GetPackets().size(), 1UL);
+}
+
+} // namespace process_gdb_remote
+} // namespace lldb_private
OpenPOWER on IntegriCloud