diff options
Diffstat (limited to 'clang/unittests/Format/FormatTestProto.cpp')
-rw-r--r-- | clang/unittests/Format/FormatTestProto.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/clang/unittests/Format/FormatTestProto.cpp b/clang/unittests/Format/FormatTestProto.cpp index 4b1480b074a..8634a36b9d9 100644 --- a/clang/unittests/Format/FormatTestProto.cpp +++ b/clang/unittests/Format/FormatTestProto.cpp @@ -18,13 +18,21 @@ namespace clang { namespace format { class FormatTestProto : public ::testing::Test { + enum StatusCheck { SC_ExpectComplete, SC_ExpectIncomplete }; + protected: static std::string format(llvm::StringRef Code, unsigned Offset, - unsigned Length, const FormatStyle &Style) { + unsigned Length, const FormatStyle &Style, + StatusCheck CheckComplete = SC_ExpectComplete) { DEBUG(llvm::errs() << "---\n"); DEBUG(llvm::errs() << Code << "\n\n"); std::vector<tooling::Range> Ranges(1, tooling::Range(Offset, Length)); - tooling::Replacements Replaces = reformat(Style, Code, Ranges); + FormattingAttemptStatus Status; + tooling::Replacements Replaces = + reformat(Style, Code, Ranges, "<stdin>", &Status); + bool ExpectedCompleteFormat = CheckComplete == SC_ExpectComplete; + EXPECT_EQ(ExpectedCompleteFormat, Status.FormatComplete) + << Code << "\n\n"; auto Result = applyAllReplacements(Code, Replaces); EXPECT_TRUE(static_cast<bool>(Result)); DEBUG(llvm::errs() << "\n" << *Result << "\n\n"); @@ -41,6 +49,12 @@ protected: EXPECT_EQ(Code.str(), format(Code)) << "Expected code is not stable"; EXPECT_EQ(Code.str(), format(test::messUp(Code))); } + + static void verifyIncompleteFormat(llvm::StringRef Code) { + FormatStyle Style = getGoogleStyle(FormatStyle::LK_Proto); + EXPECT_EQ(Code.str(), + format(Code, 0, Code.size(), Style, SC_ExpectIncomplete)); + } }; TEST_F(FormatTestProto, FormatsMessages) { @@ -492,5 +506,12 @@ TEST_F(FormatTestProto, AcceptsOperatorAsKeyInOptions) { "};"); } +TEST_F(FormatTestProto, IncompleteFormat) { + verifyIncompleteFormat("option ("); + verifyIncompleteFormat("option (MyProto.options) = { bbbbbbbbb:"); + verifyIncompleteFormat("option (MyProto.options) = { bbbbbbbbb: <\n"); + verifyIncompleteFormat("option (MyProto.options) = { bbbbbbbbb: [\n"); +} + } // end namespace tooling } // end namespace clang |