xref: /llvm-project/clang-tools-extra/unittests/clang-apply-replacements/ApplyReplacementsTest.cpp (revision 3b677b81cec7b3c5132aee8fccc30252d87deb69)
18b4fcb71SAlexander Kornienko //===- clang-apply-replacements/ApplyReplacementsTest.cpp
28b4fcb71SAlexander Kornienko //----------------------===//
38b4fcb71SAlexander Kornienko //
42946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
52946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
62946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
78b4fcb71SAlexander Kornienko //
88b4fcb71SAlexander Kornienko //===----------------------------------------------------------------------===//
98b4fcb71SAlexander Kornienko 
108b4fcb71SAlexander Kornienko #include "clang-apply-replacements/Tooling/ApplyReplacements.h"
117c3e14b6SMalcolm Parsons #include "clang/Format/Format.h"
128b4fcb71SAlexander Kornienko #include "gtest/gtest.h"
138b4fcb71SAlexander Kornienko 
148b4fcb71SAlexander Kornienko using namespace clang::replace;
158b4fcb71SAlexander Kornienko using namespace llvm;
168b4fcb71SAlexander Kornienko 
178b4fcb71SAlexander Kornienko namespace clang {
188b4fcb71SAlexander Kornienko namespace tooling {
198b4fcb71SAlexander Kornienko 
208b4fcb71SAlexander Kornienko static TUDiagnostics
makeTUDiagnostics(const std::string & MainSourceFile,StringRef DiagnosticName,const DiagnosticMessage & Message,const StringMap<Replacements> & Replacements,StringRef BuildDirectory)218b4fcb71SAlexander Kornienko makeTUDiagnostics(const std::string &MainSourceFile, StringRef DiagnosticName,
228b4fcb71SAlexander Kornienko                   const DiagnosticMessage &Message,
238b4fcb71SAlexander Kornienko                   const StringMap<Replacements> &Replacements,
248b4fcb71SAlexander Kornienko                   StringRef BuildDirectory) {
258b4fcb71SAlexander Kornienko   TUDiagnostics TUs;
26*3b677b81SWhisperity   TUs.push_back(
27*3b677b81SWhisperity       {MainSourceFile,
28*3b677b81SWhisperity        {{DiagnosticName, Message, {}, Diagnostic::Warning, BuildDirectory}}});
298b4fcb71SAlexander Kornienko   return TUs;
308b4fcb71SAlexander Kornienko }
318b4fcb71SAlexander Kornienko 
328b4fcb71SAlexander Kornienko // Test to ensure diagnostics with no fixes, will be merged correctly
338b4fcb71SAlexander Kornienko // before applying.
TEST(ApplyReplacementsTest,mergeDiagnosticsWithNoFixes)348b4fcb71SAlexander Kornienko TEST(ApplyReplacementsTest, mergeDiagnosticsWithNoFixes) {
358b4fcb71SAlexander Kornienko   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
368b4fcb71SAlexander Kornienko   DiagnosticsEngine Diagnostics(
378b4fcb71SAlexander Kornienko       IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get());
388b4fcb71SAlexander Kornienko   FileManager Files((FileSystemOptions()));
398b4fcb71SAlexander Kornienko   SourceManager SM(Diagnostics, Files);
407c3e14b6SMalcolm Parsons   TUReplacements TURs;
418b4fcb71SAlexander Kornienko   TUDiagnostics TUs =
428b4fcb71SAlexander Kornienko       makeTUDiagnostics("path/to/source.cpp", "diagnostic", {}, {}, "path/to");
437c3e14b6SMalcolm Parsons   FileToChangesMap ReplacementsMap;
448b4fcb71SAlexander Kornienko 
457c3e14b6SMalcolm Parsons   EXPECT_TRUE(mergeAndDeduplicate(TURs, TUs, ReplacementsMap, SM));
468b4fcb71SAlexander Kornienko   EXPECT_TRUE(ReplacementsMap.empty());
478b4fcb71SAlexander Kornienko }
488b4fcb71SAlexander Kornienko 
498b4fcb71SAlexander Kornienko } // end namespace tooling
508b4fcb71SAlexander Kornienko } // end namespace clang
51