diff options
author | Marco Bubke <marco.bubke@theqtcompany.com> | 2015-05-05 14:09:07 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-05-07 09:32:01 +0000 |
commit | b5750a8d19930d238c80fb4db38974f34933852e (patch) | |
tree | 80556e16f92c9bfec886f2b889d4b15864c4427c | |
parent | 7044e6c38a8de7ca0ddb393285c1dbe1abfbfc81 (diff) | |
download | qt-creator-b5750a8d19930d238c80fb4db38974f34933852e.tar.gz |
Add ticket number
Change-Id: If0413b4c3c60c10cd2b5804258a506440fe809f7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
8 files changed, 66 insertions, 23 deletions
diff --git a/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.cpp b/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.cpp index 0bd66dc8ac..8c077439e4 100644 --- a/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.cpp +++ b/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.cpp @@ -36,8 +36,9 @@ namespace CodeModelBackEnd { -CodeCompletedCommand::CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions) - : codeCompletions_(codeCompletions) +CodeCompletedCommand::CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions, quint64 ticketNumber) + : codeCompletions_(codeCompletions), + ticketNumber_(ticketNumber) { } @@ -46,9 +47,15 @@ const QVector<CodeCompletion> &CodeCompletedCommand::codeCompletions() const return codeCompletions_; } +quint64 CodeCompletedCommand::ticketNumber() const +{ + return ticketNumber_; +} + QDataStream &operator<<(QDataStream &out, const CodeCompletedCommand &command) { out << command.codeCompletions_; + out << command.ticketNumber_; return out; } @@ -56,25 +63,27 @@ QDataStream &operator<<(QDataStream &out, const CodeCompletedCommand &command) QDataStream &operator>>(QDataStream &in, CodeCompletedCommand &command) { in >> command.codeCompletions_; + in >> command.ticketNumber_; return in; } bool operator == (const CodeCompletedCommand &first, const CodeCompletedCommand &second) { - return first.codeCompletions_ == second.codeCompletions_; + return first.ticketNumber_ == second.ticketNumber_ + && first.codeCompletions_ == second.codeCompletions_; } bool operator < (const CodeCompletedCommand &first, const CodeCompletedCommand &second) { - return first.codeCompletions_ < second.codeCompletions_; + return first.ticketNumber_ < second.ticketNumber_; } QDebug operator <<(QDebug debug, const CodeCompletedCommand &command) { debug.nospace() << "CodeCompletedCommand("; - debug.nospace() << command.codeCompletions_; + debug.nospace() << command.codeCompletions_ << ", " << command.ticketNumber_; debug.nospace() << ")"; diff --git a/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.h b/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.h index 18a5ca447c..c37b237588 100644 --- a/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.h +++ b/src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.h @@ -48,12 +48,15 @@ class CMBIPC_EXPORT CodeCompletedCommand friend void PrintTo(const CodeCompletedCommand &command, ::std::ostream* os); public: CodeCompletedCommand() = default; - CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions); + CodeCompletedCommand(const QVector<CodeCompletion> &codeCompletions, quint64 ticketNumber); const QVector<CodeCompletion> &codeCompletions() const; + quint64 ticketNumber() const; + private: QVector<CodeCompletion> codeCompletions_; + quint64 ticketNumber_ = 0; }; CMBIPC_EXPORT QDataStream &operator<<(QDataStream &out, const CodeCompletedCommand &command); diff --git a/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.cpp b/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.cpp index 5f3e8f0593..d141c0b629 100644 --- a/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.cpp +++ b/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.cpp @@ -36,9 +36,12 @@ namespace CodeModelBackEnd { +quint64 CompleteCodeCommand::ticketCounter = 0; + CompleteCodeCommand::CompleteCodeCommand(const Utf8String &filePath, quint32 line, quint32 column, const Utf8String &projectFilePath) : filePath_(filePath), projectFilePath_(projectFilePath), + ticketNumber_(++ticketCounter), line_(line), column_(column) { @@ -64,10 +67,16 @@ quint32 CompleteCodeCommand::column() const return column_; } +quint64 CompleteCodeCommand::ticketNumber() const +{ + return ticketNumber_; +} + QDataStream &operator<<(QDataStream &out, const CompleteCodeCommand &command) { out << command.filePath_; out << command.projectFilePath_; + out << command.ticketNumber_; out << command.line_; out << command.column_; @@ -78,6 +87,7 @@ QDataStream &operator>>(QDataStream &in, CompleteCodeCommand &command) { in >> command.filePath_; in >> command.projectFilePath_; + in >> command.ticketNumber_; in >> command.line_; in >> command.column_; @@ -86,7 +96,8 @@ QDataStream &operator>>(QDataStream &in, CompleteCodeCommand &command) bool operator == (const CompleteCodeCommand &first, const CompleteCodeCommand &second) { - return first.filePath_ == second.filePath_ + return first.ticketNumber_ == second.ticketNumber_ + && first.filePath_ == second.filePath_ && first.projectFilePath_ == second.projectFilePath_ && first.line_ == second.line_ && first.column_ == second.column_; @@ -94,7 +105,8 @@ bool operator == (const CompleteCodeCommand &first, const CompleteCodeCommand &s bool operator < (const CompleteCodeCommand &first, const CompleteCodeCommand &second) { - return first.filePath_ < second.filePath_ + return first.ticketNumber_ < second.ticketNumber_ + && first.filePath_ < second.filePath_ && first.projectFilePath_ < second.projectFilePath_ && first.line_ < second.line_ && first.column_ < second.column_; @@ -107,7 +119,8 @@ QDebug operator <<(QDebug debug, const CompleteCodeCommand &command) debug.nospace() << command.filePath_ << ", "; debug.nospace() << command.line_<< ", "; debug.nospace() << command.column_<< ", "; - debug.nospace() << command.projectFilePath_; + debug.nospace() << command.projectFilePath_ << ", "; + debug.nospace() << command.ticketNumber_; debug.nospace() << ")"; @@ -121,7 +134,8 @@ void PrintTo(const CompleteCodeCommand &command, ::std::ostream* os) *os << command.filePath_.constData() << ", "; *os << command.line_ << ", "; *os << command.column_ << ", "; - *os << command.projectFilePath_.constData(); + *os << command.projectFilePath_.constData() << ", "; + *os << command.ticketNumber_; *os << ")"; } diff --git a/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.h b/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.h index 98afcae3e9..b600c1f400 100644 --- a/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.h +++ b/src/libs/codemodelbackendipc/source/cmbcompletecodecommand.h @@ -60,9 +60,13 @@ public: quint32 line() const; quint32 column() const; + quint64 ticketNumber() const; + private: Utf8String filePath_; Utf8String projectFilePath_; + static quint64 ticketCounter; + quint64 ticketNumber_; quint32 line_ = 0; quint32 column_ = 0; }; diff --git a/src/tools/codemodelbackend/ipcsource/clangipcserver.cpp b/src/tools/codemodelbackend/ipcsource/clangipcserver.cpp index 8befbf559b..ac10112d1e 100644 --- a/src/tools/codemodelbackend/ipcsource/clangipcserver.cpp +++ b/src/tools/codemodelbackend/ipcsource/clangipcserver.cpp @@ -85,7 +85,7 @@ void ClangIpcServer::completeCode(const CodeModelBackEnd::CompleteCodeCommand &c const auto codeCompletions = codeCompleter.complete(command.line(), command.column()); - client()->codeCompleted(CodeCompletedCommand(codeCompletions)); + client()->codeCompleted(CodeCompletedCommand(codeCompletions, command.ticketNumber())); } catch (const TranslationUnitDoesNotExistException &exception) { client()->translationUnitDoesNotExist(TranslationUnitDoesNotExistCommand(exception.fileContainer())); } catch (const ProjectDoesNotExistException &exception) { diff --git a/tests/unit/codemodelbackend/unittest/clangipcservertest.cpp b/tests/unit/codemodelbackend/unittest/clangipcservertest.cpp index c59e9435e7..46407c88c0 100644 --- a/tests/unit/codemodelbackend/unittest/clangipcservertest.cpp +++ b/tests/unit/codemodelbackend/unittest/clangipcservertest.cpp @@ -59,6 +59,7 @@ using testing::Property; using testing::Contains; using testing::Not; +using testing::Eq; namespace { @@ -361,16 +362,21 @@ TEST_F(ClangIpcServer, GetProjectDoesNotExistForCompletingUnregisteredFile) clangServer.completeCode(completeCodeCommand); } +TEST_F(ClangIpcServer, TicketNumberIsForwarded) +{ + CompleteCodeCommand completeCodeCommand(functionTestFilePath, + 20, + 1, + projectFilePath); + CodeCompletion codeCompletion(Utf8StringLiteral("Function"), + Utf8String(), + Utf8String(), + 34, + CodeCompletion::FunctionCompletionKind); -//TEST_F(ClangIpcServer, ThrowForTranslationUnitParsingError) -//{ -// changeProjectArgumentsToWrongValues(); - -// CompleteCodeCommand completeCodeCommand(functionTestFilePath, -// 20, -// 1, -// projectFilePath); + EXPECT_CALL(mockIpcClient, codeCompleted(Property(&CodeCompletedCommand::ticketNumber, Eq(completeCodeCommand.ticketNumber())))) + .Times(1); -// ASSERT_THROW(clangServer.completeCode(completeCodeCommand), CodeModelBackEnd::TranslationUnitParseErrorException); -//} + clangServer.completeCode(completeCodeCommand); +} } diff --git a/tests/unit/codemodelbackend/unittest/clientserverinprocesstest.cpp b/tests/unit/codemodelbackend/unittest/clientserverinprocesstest.cpp index 52bb96d8bd..f3a55bf839 100644 --- a/tests/unit/codemodelbackend/unittest/clientserverinprocesstest.cpp +++ b/tests/unit/codemodelbackend/unittest/clientserverinprocesstest.cpp @@ -62,6 +62,11 @@ using namespace CodeModelBackEnd; +namespace { + +using ::testing::Args; +using ::testing::Property; +using ::testing::Eq; class ClientServerInProcess : public ::testing::Test { @@ -140,7 +145,7 @@ TEST_F(ClientServerInProcess, SendCompleteCodeCommand) TEST_F(ClientServerInProcess, SendCodeCompletedCommand) { QVector<CodeModelBackEnd::CodeCompletion> codeCompletions({Utf8StringLiteral("newFunction()")}); - CodeModelBackEnd::CodeCompletedCommand command(codeCompletions); + CodeModelBackEnd::CodeCompletedCommand command(codeCompletions, 1); EXPECT_CALL(mockIpcClient, codeCompleted(command)) .Times(1); @@ -225,3 +230,5 @@ void ClientServerInProcess::scheduleClientCommands() serverProxy.readCommands(); buffer.buffer().clear(); } + +} diff --git a/tests/unit/codemodelbackend/unittest/readandwritecommandblocktest.cpp b/tests/unit/codemodelbackend/unittest/readandwritecommandblocktest.cpp index 81b4ef7400..9abbdb096d 100644 --- a/tests/unit/codemodelbackend/unittest/readandwritecommandblocktest.cpp +++ b/tests/unit/codemodelbackend/unittest/readandwritecommandblocktest.cpp @@ -151,7 +151,7 @@ TEST_F(ReadAndWriteCommandBlockTest, CompareCodeCompletedCommand) { QVector<CodeModelBackEnd::CodeCompletion> codeCompletions({Utf8StringLiteral("newFunction()")}); - CompareCommand(CodeModelBackEnd::CodeCompletedCommand(codeCompletions)); + CompareCommand(CodeModelBackEnd::CodeCompletedCommand(codeCompletions, 1)); } template<class Type> |