brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · ee30faa Raw
69 lines · cpp
1//===-- TestRegexCommand.cpp ----------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "Commands/CommandObjectRegexCommand.h"10#include "llvm/Testing/Support/Error.h"11#include "gtest/gtest.h"12 13using namespace lldb_private;14using namespace lldb;15 16namespace {17class TestRegexCommand : public CommandObjectRegexCommand {18public:19  using CommandObjectRegexCommand::SubstituteVariables;20 21  static std::string22  Substitute(llvm::StringRef input,23             const llvm::SmallVectorImpl<llvm::StringRef> &replacements) {24    llvm::Expected<std::string> str = SubstituteVariables(input, replacements);25    if (!str)26      return llvm::toString(str.takeError());27    return *str;28  }29};30} // namespace31 32TEST(RegexCommandTest, SubstituteVariablesSuccess) {33  const llvm::SmallVector<llvm::StringRef, 4> substitutions = {"all", "foo",34                                                               "bar", "baz"};35 36  EXPECT_EQ(TestRegexCommand::Substitute("%0", substitutions), "all");37  EXPECT_EQ(TestRegexCommand::Substitute("%1", substitutions), "foo");38  EXPECT_EQ(TestRegexCommand::Substitute("%2", substitutions), "bar");39  EXPECT_EQ(TestRegexCommand::Substitute("%3", substitutions), "baz");40  EXPECT_EQ(TestRegexCommand::Substitute("%1%2%3", substitutions), "foobarbaz");41  EXPECT_EQ(TestRegexCommand::Substitute("#%1#%2#%3#", substitutions),42            "#foo#bar#baz#");43}44 45TEST(RegexCommandTest, SubstituteVariablesFailed) {46  const llvm::SmallVector<llvm::StringRef, 4> substitutions = {"all", "foo",47                                                               "bar", "baz"};48 49  ASSERT_THAT_EXPECTED(50      TestRegexCommand::SubstituteVariables("%1%2%3%4", substitutions),51      llvm::Failed());52  ASSERT_THAT_EXPECTED(53      TestRegexCommand::SubstituteVariables("%5", substitutions),54      llvm::Failed());55  ASSERT_THAT_EXPECTED(56      TestRegexCommand::SubstituteVariables("%11", substitutions),57      llvm::Failed());58}59 60TEST(RegexCommandTest, SubstituteVariablesNoRecursion) {61  const llvm::SmallVector<llvm::StringRef, 4> substitutions = {"all", "%2",62                                                               "%3", "%4"};63  EXPECT_EQ(TestRegexCommand::Substitute("%0", substitutions), "all");64  EXPECT_EQ(TestRegexCommand::Substitute("%1", substitutions), "%2");65  EXPECT_EQ(TestRegexCommand::Substitute("%2", substitutions), "%3");66  EXPECT_EQ(TestRegexCommand::Substitute("%3", substitutions), "%4");67  EXPECT_EQ(TestRegexCommand::Substitute("%1%2%3", substitutions), "%2%3%4");68}69