summaryrefslogtreecommitdiffstats
path: root/lldb/unittests
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/unittests')
-rw-r--r--lldb/unittests/CMakeLists.txt1
-rw-r--r--lldb/unittests/Interpreter/CMakeLists.txt1
-rw-r--r--lldb/unittests/Interpreter/TestCompletion.cpp71
-rw-r--r--lldb/unittests/Utility/CMakeLists.txt4
-rw-r--r--lldb/unittests/Utility/Mocks/CMakeLists.txt9
-rw-r--r--lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.cpp80
-rw-r--r--lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.h37
-rw-r--r--lldb/unittests/Utility/TildeExpressionResolverTest.cpp36
8 files changed, 170 insertions, 69 deletions
diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt
index 3d4a943cb8b..e878c8746a2 100644
--- a/lldb/unittests/CMakeLists.txt
+++ b/lldb/unittests/CMakeLists.txt
@@ -2,6 +2,7 @@ add_custom_target(LLDBUnitTests)
set_target_properties(LLDBUnitTests PROPERTIES FOLDER "LLDB tests")
include_directories(${LLDB_SOURCE_ROOT})
+include_directories(${LLDB_PROJECT_ROOT})
set(LLDB_GTEST_COMMON_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/gtest_common.h)
if (MSVC)
diff --git a/lldb/unittests/Interpreter/CMakeLists.txt b/lldb/unittests/Interpreter/CMakeLists.txt
index 1f6a60bbdcd..d884dee62ec 100644
--- a/lldb/unittests/Interpreter/CMakeLists.txt
+++ b/lldb/unittests/Interpreter/CMakeLists.txt
@@ -4,6 +4,7 @@ add_lldb_unittest(InterpreterTests
LINK_LIBS
lldbInterpreter
+ lldbUtilityMocks
)
target_link_libraries(InterpreterTests
diff --git a/lldb/unittests/Interpreter/TestCompletion.cpp b/lldb/unittests/Interpreter/TestCompletion.cpp
index 12cb69a8245..4b06b7f8fad 100644
--- a/lldb/unittests/Interpreter/TestCompletion.cpp
+++ b/lldb/unittests/Interpreter/TestCompletion.cpp
@@ -8,7 +8,6 @@
//===----------------------------------------------------------------------===//
#include "gtest/gtest.h"
-
#include "lldb/Interpreter/CommandCompletions.h"
#include "lldb/Utility/StringList.h"
#include "lldb/Utility/TildeExpressionResolver.h"
@@ -18,6 +17,8 @@
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
+#include "unittests/Utility/Mocks/MockTildeExpressionResolver.h"
+
namespace fs = llvm::sys::fs;
namespace path = llvm::sys::path;
using namespace llvm;
@@ -36,74 +37,6 @@ using namespace lldb_private;
namespace {
-class MockTildeExpressionResolver : public TildeExpressionResolver {
- StringRef CurrentUser;
- StringMap<StringRef> UserDirectories;
-
-public:
- explicit MockTildeExpressionResolver(StringRef CurrentUser, StringRef HomeDir)
- : CurrentUser(CurrentUser) {
- UserDirectories.insert(std::make_pair(CurrentUser, HomeDir));
- }
-
- void AddKnownUser(StringRef User, StringRef HomeDir) {
- assert(UserDirectories.find(User) == UserDirectories.end());
- UserDirectories.insert(std::make_pair(User, HomeDir));
- }
-
- void Clear() {
- CurrentUser = StringRef();
- UserDirectories.clear();
- }
-
- void SetCurrentUser(StringRef User) {
- assert(UserDirectories.find(User) != UserDirectories.end());
- CurrentUser = User;
- }
-
- bool ResolveExact(StringRef Expr, SmallVectorImpl<char> &Output) override {
- Output.clear();
-
- assert(!llvm::any_of(
- Expr, [](char c) { return llvm::sys::path::is_separator(c); }));
- assert(Expr.empty() || Expr[0] == '~');
- Expr = Expr.drop_front();
- if (Expr.empty()) {
- auto Dir = UserDirectories[CurrentUser];
- Output.append(Dir.begin(), Dir.end());
- return true;
- }
-
- for (const auto &User : UserDirectories) {
- if (User.getKey() != Expr)
- continue;
- Output.append(User.getValue().begin(), User.getValue().end());
- return true;
- }
- return false;
- }
-
- bool ResolvePartial(StringRef Expr, StringSet<> &Output) override {
- Output.clear();
-
- assert(!llvm::any_of(
- Expr, [](char c) { return llvm::sys::path::is_separator(c); }));
- assert(Expr.empty() || Expr[0] == '~');
- Expr = Expr.drop_front();
-
- SmallString<16> QualifiedName("~");
- for (const auto &User : UserDirectories) {
- if (!User.getKey().startswith(Expr))
- continue;
- QualifiedName.resize(1);
- QualifiedName.append(User.getKey().begin(), User.getKey().end());
- Output.insert(QualifiedName);
- }
-
- return !Output.empty();
- }
-};
-
class CompletionTest : public testing::Test {
protected:
/// Unique temporary directory in which all created filesystem entities must
diff --git a/lldb/unittests/Utility/CMakeLists.txt b/lldb/unittests/Utility/CMakeLists.txt
index 782f4e52ed7..60868bcb414 100644
--- a/lldb/unittests/Utility/CMakeLists.txt
+++ b/lldb/unittests/Utility/CMakeLists.txt
@@ -1,3 +1,5 @@
+add_subdirectory(Mocks)
+
add_lldb_unittest(UtilityTests
ConstStringTest.cpp
ErrorTest.cpp
@@ -5,12 +7,14 @@ add_lldb_unittest(UtilityTests
NameMatchesTest.cpp
StringExtractorTest.cpp
TaskPoolTest.cpp
+ TildeExpressionResolverTest.cpp
TimeoutTest.cpp
UriParserTest.cpp
VASprintfTest.cpp
LINK_LIBS
lldbUtility
+ lldbUtilityMocks
LINK_COMPONENTS
Support
)
diff --git a/lldb/unittests/Utility/Mocks/CMakeLists.txt b/lldb/unittests/Utility/Mocks/CMakeLists.txt
new file mode 100644
index 00000000000..57db5bf3b62
--- /dev/null
+++ b/lldb/unittests/Utility/Mocks/CMakeLists.txt
@@ -0,0 +1,9 @@
+add_lldb_library(lldbUtilityMocks
+ MockTildeExpressionResolver.cpp
+
+ LINK_LIBS
+ lldbUtility
+
+ LINK_COMPONENTS
+ Support
+ )
diff --git a/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.cpp b/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.cpp
new file mode 100644
index 00000000000..832836682b5
--- /dev/null
+++ b/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.cpp
@@ -0,0 +1,80 @@
+//===----------------- MockTildeExpressionResolver.cpp ----------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "MockTildeExpressionResolver.h"
+#include "llvm/Support/Path.h"
+
+using namespace lldb_private;
+using namespace llvm;
+
+MockTildeExpressionResolver::MockTildeExpressionResolver(StringRef CurrentUser,
+ StringRef HomeDir)
+ : CurrentUser(CurrentUser) {
+ UserDirectories.insert(std::make_pair(CurrentUser, HomeDir));
+}
+
+void MockTildeExpressionResolver::AddKnownUser(StringRef User,
+ StringRef HomeDir) {
+ assert(UserDirectories.find(User) == UserDirectories.end());
+ UserDirectories.insert(std::make_pair(User, HomeDir));
+}
+
+void MockTildeExpressionResolver::Clear() {
+ CurrentUser = StringRef();
+ UserDirectories.clear();
+}
+
+void MockTildeExpressionResolver::SetCurrentUser(StringRef User) {
+ assert(UserDirectories.find(User) != UserDirectories.end());
+ CurrentUser = User;
+}
+
+bool MockTildeExpressionResolver::ResolveExact(StringRef Expr,
+ SmallVectorImpl<char> &Output) {
+ Output.clear();
+
+ assert(!llvm::any_of(
+ Expr, [](char c) { return llvm::sys::path::is_separator(c); }));
+ assert(Expr.empty() || Expr[0] == '~');
+ Expr = Expr.drop_front();
+ if (Expr.empty()) {
+ auto Dir = UserDirectories[CurrentUser];
+ Output.append(Dir.begin(), Dir.end());
+ return true;
+ }
+
+ for (const auto &User : UserDirectories) {
+ if (User.getKey() != Expr)
+ continue;
+ Output.append(User.getValue().begin(), User.getValue().end());
+ return true;
+ }
+ return false;
+}
+
+bool MockTildeExpressionResolver::ResolvePartial(StringRef Expr,
+ StringSet<> &Output) {
+ Output.clear();
+
+ assert(!llvm::any_of(
+ Expr, [](char c) { return llvm::sys::path::is_separator(c); }));
+ assert(Expr.empty() || Expr[0] == '~');
+ Expr = Expr.drop_front();
+
+ SmallString<16> QualifiedName("~");
+ for (const auto &User : UserDirectories) {
+ if (!User.getKey().startswith(Expr))
+ continue;
+ QualifiedName.resize(1);
+ QualifiedName.append(User.getKey().begin(), User.getKey().end());
+ Output.insert(QualifiedName);
+ }
+
+ return !Output.empty();
+}
diff --git a/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.h b/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.h
new file mode 100644
index 00000000000..7ae5623f839
--- /dev/null
+++ b/lldb/unittests/Utility/Mocks/MockTildeExpressionResolver.h
@@ -0,0 +1,37 @@
+//===--------------------- TildeExpressionResolver.h ------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_UNITTESTS_UTILITY_MOCKS_MOCK_TILDE_EXPRESSION_RESOLVER_H
+#define LLDB_UNITTESTS_UTILITY_MOCKS_MOCK_TILDE_EXPRESSION_RESOLVER_H
+
+#include "lldb/Utility/TildeExpressionResolver.h"
+
+#include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/StringMap.h"
+
+namespace lldb_private {
+class MockTildeExpressionResolver : public TildeExpressionResolver {
+ llvm::StringRef CurrentUser;
+ llvm::StringMap<llvm::StringRef> UserDirectories;
+
+public:
+ MockTildeExpressionResolver(llvm::StringRef CurrentUser,
+ llvm::StringRef HomeDir);
+
+ void AddKnownUser(llvm::StringRef User, llvm::StringRef HomeDir);
+ void Clear();
+ void SetCurrentUser(llvm::StringRef User);
+
+ bool ResolveExact(llvm::StringRef Expr,
+ llvm::SmallVectorImpl<char> &Output) override;
+ bool ResolvePartial(llvm::StringRef Expr, llvm::StringSet<> &Output) override;
+};
+}
+
+#endif
diff --git a/lldb/unittests/Utility/TildeExpressionResolverTest.cpp b/lldb/unittests/Utility/TildeExpressionResolverTest.cpp
new file mode 100644
index 00000000000..fd953390ed5
--- /dev/null
+++ b/lldb/unittests/Utility/TildeExpressionResolverTest.cpp
@@ -0,0 +1,36 @@
+#include "gtest/gtest.h"
+
+#include "Mocks/MockTildeExpressionResolver.h"
+#include "lldb/Utility/TildeExpressionResolver.h"
+
+#include "llvm/ADT/SmallString.h"
+
+using namespace llvm;
+using namespace lldb_private;
+
+TEST(TildeExpressionResolver, ResolveFullPath) {
+ MockTildeExpressionResolver Resolver("James", "/james");
+ Resolver.AddKnownUser("Kirk", "/kirk");
+ Resolver.AddKnownUser("Lars", "/lars");
+ Resolver.AddKnownUser("Jason", "/jason");
+ Resolver.AddKnownUser("Larry", "/larry");
+
+ SmallString<32> Result;
+ ASSERT_TRUE(Resolver.ResolveFullPath("~", Result));
+ EXPECT_EQ("/james", Result);
+ ASSERT_TRUE(Resolver.ResolveFullPath("~/", Result));
+ EXPECT_EQ("/james/", Result);
+
+ ASSERT_TRUE(Resolver.ResolveFullPath("~James/bar/baz", Result));
+ EXPECT_EQ("/james/bar/baz", Result);
+
+ ASSERT_TRUE(Resolver.ResolveFullPath("~Jason/", Result));
+ EXPECT_EQ("/jason/", Result);
+
+ ASSERT_TRUE(Resolver.ResolveFullPath("~Lars", Result));
+ EXPECT_EQ("/lars", Result);
+
+ ASSERT_FALSE(Resolver.ResolveFullPath("~Jaso", Result));
+ ASSERT_FALSE(Resolver.ResolveFullPath("", Result));
+ ASSERT_FALSE(Resolver.ResolveFullPath("Jason", Result));
+}
OpenPOWER on IntegriCloud