From 8dac5ff1c474e9eb0ed1521a3821bcdaff532953 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 29 Nov 2017 15:20:15 +0100 Subject: [PATCH] UnitTests: Remove heap allocations in the DocumentProcessor test A fixture class is called for every test, so we don't need that setup code. Change-Id: I7fb2ee8248a161f701292a90eb6b8b88e9df08a7 Reviewed-by: Nikolai Kosjar --- .../unittest/clangdocumentprocessor-test.cpp | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/tests/unit/unittest/clangdocumentprocessor-test.cpp b/tests/unit/unittest/clangdocumentprocessor-test.cpp index 7b9b73891d7..d18803eb4bb 100644 --- a/tests/unit/unittest/clangdocumentprocessor-test.cpp +++ b/tests/unit/unittest/clangdocumentprocessor-test.cpp @@ -41,39 +41,23 @@ using namespace ClangBackEnd; namespace { -struct Data { - Data() - { - projects.createOrUpdate({ProjectPartContainer(projectPartId)}); - - const QVector fileContainer{FileContainer(filePath, projectPartId)}; - document = documents.create(fileContainer).front(); - documents.setVisibleInEditors({filePath}); - documents.setUsedByCurrentEditor(filePath); - } - - ClangBackEnd::ProjectParts projects; - ClangBackEnd::UnsavedFiles unsavedFiles; - ClangBackEnd::Documents documents{projects, unsavedFiles}; - ClangBackEnd::Document document; - - DummyIpcClient dummyIpcClient; - - Utf8String filePath{Utf8StringLiteral(TESTDATA_DIR"/translationunits.cpp")}; - Utf8String projectPartId{Utf8StringLiteral("/path/to/projectfile")}; -}; - class DocumentProcessor : public ::testing::Test { protected: void SetUp() override; void TearDown() override; + bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const; protected: - std::unique_ptr d; - std::unique_ptr documentProcessor; + ClangBackEnd::ProjectParts projects; + ClangBackEnd::UnsavedFiles unsavedFiles; + ClangBackEnd::Documents documents{projects, unsavedFiles}; - bool waitUntilAllJobsFinished(int timeOutInMs = 10000) const; + DummyIpcClient dummyIpcClient; + + Utf8String filePath{Utf8StringLiteral(TESTDATA_DIR"/translationunits.cpp")}; + Utf8String projectPartId{Utf8StringLiteral("/path/to/projectfile")}; + std::unique_ptr documentProcessor; }; using DocumentProcessorSlowTest = DocumentProcessor; @@ -98,18 +82,19 @@ TEST_F(DocumentProcessorSlowTest, ProcessSingleJob) void DocumentProcessor::SetUp() { - d.reset(new Data); - documentProcessor.reset(new ClangBackEnd::DocumentProcessor(d->document, - d->documents, - d->unsavedFiles, - d->projects, - d->dummyIpcClient)); + const QVector fileContainer{FileContainer(filePath, projectPartId)}; + + projects.createOrUpdate({ProjectPartContainer(projectPartId)}); + ClangBackEnd::Document document = {documents.create(fileContainer).front()}; + documents.setVisibleInEditors({filePath}); + documents.setUsedByCurrentEditor(filePath); + documentProcessor = std::make_unique( + document, documents, unsavedFiles, projects, dummyIpcClient); } void DocumentProcessor::TearDown() { ASSERT_TRUE(waitUntilAllJobsFinished()); // QFuture/QFutureWatcher is implemented with events - d.reset(); } bool DocumentProcessor::waitUntilAllJobsFinished(int timeOutInMs) const