summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/source/Interpreter/Args.cpp2
-rw-r--r--lldb/unittests/CMakeLists.txt1
-rw-r--r--lldb/unittests/Interpreter/CMakeLists.txt8
-rw-r--r--lldb/unittests/Interpreter/TestArgs.cpp70
4 files changed, 80 insertions, 1 deletions
diff --git a/lldb/source/Interpreter/Args.cpp b/lldb/source/Interpreter/Args.cpp
index 95f7ea52066..0678768ea72 100644
--- a/lldb/source/Interpreter/Args.cpp
+++ b/lldb/source/Interpreter/Args.cpp
@@ -230,7 +230,7 @@ Args::ParseSingleArgument(llvm::StringRef command)
arg += '\\';
arg += command.front();
- command.drop_front();
+ command = command.drop_front();
break;
diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt
index 68999045c14..64dee012344 100644
--- a/lldb/unittests/CMakeLists.txt
+++ b/lldb/unittests/CMakeLists.txt
@@ -21,5 +21,6 @@ function(add_lldb_unittest test_name)
endfunction()
add_subdirectory(Host)
+add_subdirectory(Interpreter)
add_subdirectory(Plugins)
add_subdirectory(Utility)
diff --git a/lldb/unittests/Interpreter/CMakeLists.txt b/lldb/unittests/Interpreter/CMakeLists.txt
new file mode 100644
index 00000000000..4587a01b616
--- /dev/null
+++ b/lldb/unittests/Interpreter/CMakeLists.txt
@@ -0,0 +1,8 @@
+set(LLDB_USED_LIBS
+ lldbInterpreter
+ ${PYTHON_LIBRARY}
+ )
+
+add_lldb_unittest(InterpreterTests
+ TestArgs.cpp
+ )
diff --git a/lldb/unittests/Interpreter/TestArgs.cpp b/lldb/unittests/Interpreter/TestArgs.cpp
new file mode 100644
index 00000000000..a459721d03a
--- /dev/null
+++ b/lldb/unittests/Interpreter/TestArgs.cpp
@@ -0,0 +1,70 @@
+//===-- ArgsTest.cpp --------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+
+#include "lldb/Interpreter/Args.h"
+
+using namespace lldb_private;
+
+TEST(ArgsTest, TestSingleArg)
+{
+ Args args;
+ args.SetCommandString("arg");
+ EXPECT_EQ(1, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg");
+}
+
+TEST(ArgsTest, TestSingleQuotedArgWithSpace)
+{
+ Args args;
+ args.SetCommandString("\"arg with space\"");
+ EXPECT_EQ(1, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg with space");
+}
+
+TEST(ArgsTest, TestSingleArgWithQuotedSpace)
+{
+ Args args;
+ args.SetCommandString("arg\\ with\\ space");
+ EXPECT_EQ(1, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg with space");
+}
+
+TEST(ArgsTest, TestMultipleArgs)
+{
+ Args args;
+ args.SetCommandString("this has multiple args");
+ EXPECT_EQ(4, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "this");
+ EXPECT_STREQ(args.GetArgumentAtIndex(1), "has");
+ EXPECT_STREQ(args.GetArgumentAtIndex(2), "multiple");
+ EXPECT_STREQ(args.GetArgumentAtIndex(3), "args");
+}
+
+TEST(ArgsTest, TestOverwriteArgs)
+{
+ Args args;
+ args.SetCommandString("this has multiple args");
+ EXPECT_EQ(4, args.GetArgumentCount());
+ args.SetCommandString("arg");
+ EXPECT_EQ(1, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg");
+}
+
+TEST(ArgsTest, TestAppendArg)
+{
+ Args args;
+ args.SetCommandString("first_arg");
+ EXPECT_EQ(1, args.GetArgumentCount());
+ args.AppendArgument("second_arg");
+ EXPECT_EQ(2, args.GetArgumentCount());
+ EXPECT_STREQ(args.GetArgumentAtIndex(0), "first_arg");
+ EXPECT_STREQ(args.GetArgumentAtIndex(1), "second_arg");
+}
OpenPOWER on IntegriCloud