//===- clang-apply-replacements/ApplyReplacementsTest.cpp //----------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "clang-apply-replacements/Tooling/ApplyReplacements.h" #include "clang/Format/Format.h" #include "gtest/gtest.h" using namespace clang::replace; using namespace llvm; namespace clang { namespace tooling { static TUDiagnostics makeTUDiagnostics(const std::string &MainSourceFile, StringRef DiagnosticName, const DiagnosticMessage &Message, const StringMap &Replacements, StringRef BuildDirectory) { TUDiagnostics TUs; TUs.push_back({MainSourceFile, {{DiagnosticName, Message, Replacements, {}, Diagnostic::Warning, BuildDirectory}}}); return TUs; } // Test to ensure diagnostics with no fixes, will be merged correctly // before applying. TEST(ApplyReplacementsTest, mergeDiagnosticsWithNoFixes) { IntrusiveRefCntPtr DiagOpts(new DiagnosticOptions()); DiagnosticsEngine Diagnostics( IntrusiveRefCntPtr(new DiagnosticIDs()), DiagOpts.get()); FileManager Files((FileSystemOptions())); SourceManager SM(Diagnostics, Files); TUReplacements TURs; TUDiagnostics TUs = makeTUDiagnostics("path/to/source.cpp", "diagnostic", {}, {}, "path/to"); FileToChangesMap ReplacementsMap; EXPECT_TRUE(mergeAndDeduplicate(TURs, TUs, ReplacementsMap, SM)); EXPECT_TRUE(ReplacementsMap.empty()); } } // end namespace tooling } // end namespace clang