56 lines · c
1//===- unittest/Tooling/ReplacementTest.h - Replacements related test------===//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// This file defines utility class and function for Replacement related tests.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_UNITTESTS_TOOLING_REPLACEMENTTESTBASE_H14#define LLVM_CLANG_UNITTESTS_TOOLING_REPLACEMENTTESTBASE_H15 16#include "RewriterTestContext.h"17#include "clang/Tooling/Core/Replacement.h"18#include "gtest/gtest.h"19 20namespace clang {21namespace tooling {22 23/// \brief Converts a set of replacements to Replacements class.24/// \return A Replacements class containing \p Replaces on success; otherwise,25/// an empty Replacements is returned.26inline tooling::Replacements27toReplacements(const std::set<tooling::Replacement> &Replaces) {28 tooling::Replacements Result;29 for (const auto &R : Replaces) {30 auto Err = Result.add(R);31 EXPECT_TRUE(!Err);32 if (Err) {33 llvm::errs() << llvm::toString(std::move(Err)) << "\n";34 return tooling::Replacements();35 }36 }37 return Result;38}39 40/// \brief A utility class for replacement related tests.41class ReplacementTest : public ::testing::Test {42protected:43 tooling::Replacement createReplacement(SourceLocation Start, unsigned Length,44 llvm::StringRef ReplacementText) {45 return tooling::Replacement(Context.Sources, Start, Length,46 ReplacementText);47 }48 49 RewriterTestContext Context;50};51 52} // namespace tooling53} // namespace clang54 55#endif // LLVM_CLANG_UNITTESTS_TOOLING_REPLACEMENTTESTBASE_H56