diff options
author | Edwin Vane <edwin.vane@intel.com> | 2013-07-23 12:50:03 +0000 |
---|---|---|
committer | Edwin Vane <edwin.vane@intel.com> | 2013-07-23 12:50:03 +0000 |
commit | 571a64159b4c828f2748b228993619bee416b90b (patch) | |
tree | f756baf58c396121d0cf4168057d08f623fa94f4 /clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp | |
parent | 2dfb1cfd0cfffcf6444740579f39a865107a34e3 (diff) | |
download | bcm5719-llvm-571a64159b4c828f2748b228993619bee416b90b.tar.gz bcm5719-llvm-571a64159b4c828f2748b228993619bee416b90b.zip |
cp11-migrate: Integration with LibFormat
Adding a feature to optionally reformat code changed by the migrator. Like
LibFormat, can choose between built-in styles (LLVM, Mozilla, Google, Chromium)
or use a YAML-format config file.
Now with no dependency on iostream by the Reformatting.cpp LIT test.
Author: Guillaume Papin <guillaume.papin@epitech.eu>
llvm-svn: 186938
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp index 3cbdfd3969b..39ed662cbec 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp +++ b/clang-tools-extra/unittests/cpp11-migrate/FileOverridesTest.cpp @@ -21,10 +21,11 @@ TEST(SourceOverridesTest, Interface) { FileName, "std::vector<such_a_long_name_for_a_type>::const_iterator long_type =\n" " vec.begin();\n"); - SourceOverrides Overrides(FileName); + SourceOverrides Overrides(FileName, /*TrackFileChanges=*/false); EXPECT_EQ(FileName, Overrides.getMainFileName()); EXPECT_FALSE(Overrides.isSourceOverriden()); + EXPECT_FALSE(Overrides.isTrackingFileChanges()); Replacements Replaces; unsigned ReplacementLength = @@ -37,3 +38,103 @@ TEST(SourceOverridesTest, Interface) { " vec.begin();\n"; EXPECT_EQ(ExpectedContent, Overrides.getMainFileContent()); } + +namespace { +Replacement makeReplacement(unsigned Offset, unsigned Length, + unsigned ReplacementLength) { + return Replacement("", Offset, Length, std::string(ReplacementLength, '~')); +} + +// generate a set of replacements containing one element +Replacements makeReplacements(unsigned Offset, unsigned Length, + unsigned ReplacementLength) { + Replacements Replaces; + Replaces.insert(makeReplacement(Offset, Length, ReplacementLength)); + return Replaces; +} + +bool equalRanges(Range A, Range B) { + return A.getOffset() == B.getOffset() && A.getLength() == B.getLength(); +} +} // end anonymous namespace + +TEST(ChangedRangesTest, adjustChangedRangesShrink) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(0, 0, 4)); + EXPECT_NE(Changes.begin(), Changes.end()); + EXPECT_TRUE(equalRanges(Range(0, 4), *Changes.begin())); + // create a replacement that cuts the end of the last insertion + Changes.adjustChangedRanges(makeReplacements(2, 4, 0)); + Range ExpectedChanges[] = { Range(0, 2) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesExtend) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(1, 0, 4)); + // cut the old one by a bigger one + Changes.adjustChangedRanges(makeReplacements(3, 4, 6)); + Range ExpectedChanges[] = { Range(1, 8) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesNoOverlap) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(0, 0, 4)); + Changes.adjustChangedRanges(makeReplacements(6, 0, 4)); + Range ExpectedChanges[] = { Range(0, 4), Range(6, 4) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesNullRange) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(0, 4, 0)); + Range ExpectedChanges[] = { Range(0, 0) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesExtendExisting) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(0, 0, 3)); + Changes.adjustChangedRanges(makeReplacements(2, 5, 8)); + Range ExpectedChanges[] = { Range(0, 10) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesSplit) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(0, 0, 3)); + Changes.adjustChangedRanges(makeReplacements(1, 1, 0)); + Range ExpectedChanges[] = { Range(0, 2) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesRangeContained) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(3, 0, 2)); + Changes.adjustChangedRanges(makeReplacements(1, 4, 5)); + Range ExpectedChanges[] = { Range(1, 5) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} + +TEST(ChangedRangesTest, adjustChangedRangesRangeResized) { + ChangedRanges Changes; + Changes.adjustChangedRanges(makeReplacements(2, 0, 5)); + // first make the range bigger + Changes.adjustChangedRanges(makeReplacements(4, 1, 3)); + Range ExpectedChanges[] = { Range(2, 7) }; + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); + // then smaller + Changes.adjustChangedRanges(makeReplacements(3, 3, 1)); + ExpectedChanges[0] = Range(2, 5); + EXPECT_TRUE( + std::equal(Changes.begin(), Changes.end(), ExpectedChanges, equalRanges)); +} |