diff options
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate')
6 files changed, 109 insertions, 15 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/CMakeLists.txt b/clang-tools-extra/unittests/cpp11-migrate/CMakeLists.txt index 1f647d5dc19..8da010f0dbd 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/CMakeLists.txt +++ b/clang-tools-extra/unittests/cpp11-migrate/CMakeLists.txt @@ -11,6 +11,7 @@ add_extra_unittest(Cpp11MigrateTests ReformattingTest.cpp
IncludeExcludeTest.cpp
PerfSupportTest.cpp
+ ReplacementsYamlTest.cpp
TransformTest.cpp
UniqueHeaderNameTest.cpp
)
diff --git a/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp index 39ed662cbec..382c5a8c737 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp +++ b/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp @@ -30,8 +30,10 @@ TEST(SourceOverridesTest, Interface) { Replacements Replaces; unsigned ReplacementLength = strlen("std::vector<such_a_long_name_for_a_type>::const_iterator"); - Replaces.insert(Replacement(FileName, 0, ReplacementLength, "auto")); - Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager()); + Replaces.insert( + Replacement(FileName, 0, ReplacementLength, "auto")); + Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager(), + "use-auto"); EXPECT_TRUE(Overrides.isSourceOverriden()); std::string ExpectedContent = "auto long_type =\n" diff --git a/clang-tools-extra/unittests/cpp11-migrate/IncludeExcludeTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/IncludeExcludeTest.cpp index 8b772c49451..52a9d32d1f6 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/IncludeExcludeTest.cpp +++ b/clang-tools-extra/unittests/cpp11-migrate/IncludeExcludeTest.cpp @@ -7,24 +7,13 @@ // //===----------------------------------------------------------------------===// +#include "Utility.h" #include "Core/IncludeExcludeInfo.h" #include "gtest/gtest.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" #include <fstream> -// FIXME: copied from unittests/Support/Path.cpp -#define ASSERT_NO_ERROR(x) \ - if (llvm::error_code ASSERT_NO_ERROR_ec = x) { \ - llvm::SmallString<128> MessageStorage; \ - llvm::raw_svector_ostream Message(MessageStorage); \ - Message << #x ": did not return errc::success.\n" \ - << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \ - << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \ - GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \ - } else { \ - } - TEST(IncludeExcludeTest, ParseString) { IncludeExcludeInfo IEManager; llvm::error_code Err = IEManager.readListFromString( diff --git a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp index fcde6b81db4..a5caa0a3d77 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp +++ b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp @@ -39,7 +39,8 @@ TEST(Reformatter, SingleReformat) { FileName, Changes, VFHelper.getNewSourceManager()); SourceOverrides Overrides(FileName, /*TrackChanges=*/false); - Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager()); + Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager(), + "reformatter"); std::string Expected, Result; diff --git a/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp new file mode 100644 index 00000000000..7b95e4dcadd --- /dev/null +++ b/clang-tools-extra/unittests/cpp11-migrate/ReplacementsYamlTest.cpp @@ -0,0 +1,76 @@ +//===- unittests/cpp11-migrate/ReplacementsYamlTest.cpp -------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Test for the Yaml files generated by transforms on header files. +// +//===----------------------------------------------------------------------===// + +#include "Utility.h" +#include "Core/FileOverrides.h" +#include "gtest/gtest.h" + +using namespace llvm; + +TEST(ReplacementsYamlTest, writeReadTest) { + using clang::tooling::Replacement; + + const std::string HeaderFileName = "/path/to/common.h"; + const std::string SourceFileName = "/path/to/source.cpp"; + const std::string TransformID = "loop-convert"; + const unsigned int ReplacementOffset1 = 232; + const unsigned int ReplacementLength1 = 56; + const std::string ReplacementText1 = "(auto & elem : V)"; + const unsigned int ReplacementOffset2 = 301; + const unsigned int ReplacementLength2 = 2; + const std::string ReplacementText2 = "elem"; + + HeaderChangeDocument HCD; + HCD.TransformID = TransformID; + HCD.Replacements.push_back(Replacement(HeaderFileName, ReplacementOffset1, + ReplacementLength1, ReplacementText1)); + HCD.Replacements.push_back(Replacement(HeaderFileName, ReplacementOffset2, + ReplacementLength2, ReplacementText2)); + + HCD.HeaderFileName = HeaderFileName.c_str(); + HCD.SourceFileName = SourceFileName.c_str(); + + std::string YamlContent; + llvm::raw_string_ostream YamlContentStream(YamlContent); + + // Write to the YAML file. + { + yaml::Output YAML(YamlContentStream); + YAML << HCD; + YamlContentStream.str(); + ASSERT_NE(YamlContent.length(), 0u); + } + + // Read from the YAML file and verify that what was written is exactly what + // we read back. + { + HeaderChangeDocument HCDActual; + yaml::Input YAML(YamlContent); + YAML >> HCDActual; + ASSERT_NO_ERROR(YAML.error()); + EXPECT_EQ(HeaderFileName, HCDActual.HeaderFileName); + EXPECT_EQ(SourceFileName, HCDActual.SourceFileName); + EXPECT_EQ(TransformID, HCDActual.TransformID); + ASSERT_EQ(2u, HCDActual.Replacements.size()); + + EXPECT_EQ(ReplacementOffset1, HCDActual.Replacements[0].getOffset()); + EXPECT_EQ(ReplacementLength1, HCDActual.Replacements[0].getLength()); + EXPECT_EQ(ReplacementText1, + HCDActual.Replacements[0].getReplacementText().str()); + + EXPECT_EQ(ReplacementOffset2, HCDActual.Replacements[1].getOffset()); + EXPECT_EQ(ReplacementLength2, HCDActual.Replacements[1].getLength()); + EXPECT_EQ(ReplacementText2, + HCDActual.Replacements[1].getReplacementText().str()); + } +} diff --git a/clang-tools-extra/unittests/cpp11-migrate/Utility.h b/clang-tools-extra/unittests/cpp11-migrate/Utility.h new file mode 100644 index 00000000000..54291d941a3 --- /dev/null +++ b/clang-tools-extra/unittests/cpp11-migrate/Utility.h @@ -0,0 +1,25 @@ +//=-- cpp11-migrate/Utility.h - Utility functions and macros-----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef CPP11_MIGRATE_UNITTESTS_UTILITY_H +#define CPP11_MIGRATE_UNITTESTS_UTILITY_H + +// FIXME: copied from unittests/Support/Path.cpp +#define ASSERT_NO_ERROR(x) \ + if (llvm::error_code ASSERT_NO_ERROR_ec = x) { \ + llvm::SmallString<128> MessageStorage; \ + llvm::raw_svector_ostream Message(MessageStorage); \ + Message << #x ": did not return errc::success.\n" \ + << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \ + << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \ + GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \ + } else { \ + } + +#endif // CPP11_MIGRATE_UNITTESTS_UTILITY_H |