forked from qt-creator/qt-creator
Clang: Return updated documents
Change-Id: Id4b1267914019ac56cdd132c6d597167a1f2b9a9 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -68,14 +68,20 @@ std::vector<Document> Documents::create(const QVector<FileContainer> &fileContai
|
|||||||
return createdDocuments;
|
return createdDocuments;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Documents::update(const QVector<FileContainer> &fileContainers)
|
std::vector<Document> Documents::update(const QVector<FileContainer> &fileContainers)
|
||||||
{
|
{
|
||||||
checkIfDocumentsForFilePathsExist(fileContainers);
|
checkIfDocumentsForFilePathsExist(fileContainers);
|
||||||
|
|
||||||
|
std::vector<Document> createdDocuments;
|
||||||
|
|
||||||
for (const FileContainer &fileContainer : fileContainers) {
|
for (const FileContainer &fileContainer : fileContainers) {
|
||||||
updateDocument(fileContainer);
|
const std::vector<Document> documents = updateDocument(fileContainer);
|
||||||
|
createdDocuments.insert(createdDocuments.end(), documents.begin(), documents.end());
|
||||||
|
|
||||||
updateDocumentsWithChangedDependency(fileContainer.filePath());
|
updateDocumentsWithChangedDependency(fileContainer.filePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return createdDocuments;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool removeFromFileContainer(QVector<FileContainer> &fileContainers, const Document &document)
|
static bool removeFromFileContainer(QVector<FileContainer> &fileContainers, const Document &document)
|
||||||
@@ -205,12 +211,14 @@ Document Documents::createDocument(const FileContainer &fileContainer)
|
|||||||
return documents_.back();
|
return documents_.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Documents::updateDocument(const FileContainer &fileContainer)
|
std::vector<Document> Documents::updateDocument(const FileContainer &fileContainer)
|
||||||
{
|
{
|
||||||
const auto documents = findAllDocumentsWithFilePath(fileContainer.filePath());
|
const auto documents = findAllDocumentsWithFilePath(fileContainer.filePath());
|
||||||
|
|
||||||
for (auto document : documents)
|
for (auto document : documents)
|
||||||
document.setDocumentRevision(fileContainer.documentRevision());
|
document.setDocumentRevision(fileContainer.documentRevision());
|
||||||
|
|
||||||
|
return documents;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Document>::iterator Documents::findDocument(const FileContainer &fileContainer)
|
std::vector<Document>::iterator Documents::findDocument(const FileContainer &fileContainer)
|
||||||
|
@@ -45,7 +45,7 @@ public:
|
|||||||
Documents(ProjectParts &projectParts, UnsavedFiles &unsavedFiles);
|
Documents(ProjectParts &projectParts, UnsavedFiles &unsavedFiles);
|
||||||
|
|
||||||
std::vector<Document> create(const QVector<FileContainer> &fileContainers);
|
std::vector<Document> create(const QVector<FileContainer> &fileContainers);
|
||||||
void update(const QVector<FileContainer> &fileContainers);
|
std::vector<Document> update(const QVector<FileContainer> &fileContainers);
|
||||||
void remove(const QVector<FileContainer> &fileContainers);
|
void remove(const QVector<FileContainer> &fileContainers);
|
||||||
|
|
||||||
void setUsedByCurrentEditor(const Utf8String &filePath);
|
void setUsedByCurrentEditor(const Utf8String &filePath);
|
||||||
@@ -72,7 +72,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Document createDocument(const FileContainer &fileContainer);
|
Document createDocument(const FileContainer &fileContainer);
|
||||||
void updateDocument(const FileContainer &fileContainer);
|
std::vector<Document> updateDocument(const FileContainer &fileContainer);
|
||||||
std::vector<Document>::iterator findDocument(const FileContainer &fileContainer);
|
std::vector<Document>::iterator findDocument(const FileContainer &fileContainer);
|
||||||
std::vector<Document> findAllDocumentsWithFilePath(const Utf8String &filePath);
|
std::vector<Document> findAllDocumentsWithFilePath(const Utf8String &filePath);
|
||||||
std::vector<Document>::const_iterator findDocument(const Utf8String &filePath, const Utf8String &projectPartId) const;
|
std::vector<Document>::const_iterator findDocument(const Utf8String &filePath, const Utf8String &projectPartId) const;
|
||||||
|
@@ -43,6 +43,7 @@ using ClangBackEnd::ProjectPartContainer;
|
|||||||
using testing::IsNull;
|
using testing::IsNull;
|
||||||
using testing::NotNull;
|
using testing::NotNull;
|
||||||
using testing::Gt;
|
using testing::Gt;
|
||||||
|
using testing::Eq;
|
||||||
using testing::Not;
|
using testing::Not;
|
||||||
using testing::Contains;
|
using testing::Contains;
|
||||||
|
|
||||||
@@ -158,6 +159,18 @@ TEST_F(Documents, UpdateSingle)
|
|||||||
IsDocument(filePath, projectPartId, 75u));
|
IsDocument(filePath, projectPartId, 75u));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(Documents, UpdateReturnsUpdatedDocument)
|
||||||
|
{
|
||||||
|
ClangBackEnd::FileContainer createFileContainer(filePath, projectPartId, Utf8StringVector(), 74u);
|
||||||
|
ClangBackEnd::FileContainer updateFileContainer(filePath, Utf8String(), Utf8StringVector(), 75u);
|
||||||
|
documents.create({createFileContainer});
|
||||||
|
|
||||||
|
const std::vector<Document> updatedDocuments = documents.update({updateFileContainer});
|
||||||
|
|
||||||
|
ASSERT_THAT(updatedDocuments.size(), Eq(1u));
|
||||||
|
ASSERT_THAT(updatedDocuments.front().documentRevision(), Eq(75u));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(Documents, UpdateMultiple)
|
TEST_F(Documents, UpdateMultiple)
|
||||||
{
|
{
|
||||||
ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u);
|
ClangBackEnd::FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74u);
|
||||||
|
Reference in New Issue
Block a user