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