diff options
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/source/Interpreter/Args.cpp | 2 | ||||
| -rw-r--r-- | lldb/unittests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | lldb/unittests/Interpreter/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | lldb/unittests/Interpreter/TestArgs.cpp | 70 |
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"); +} |

