summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@theqtcompany.com>2015-05-05 14:09:07 +0200
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-05-07 09:32:01 +0000
commitb5750a8d19930d238c80fb4db38974f34933852e (patch)
tree80556e16f92c9bfec886f2b889d4b15864c4427c
parent7044e6c38a8de7ca0ddb393285c1dbe1abfbfc81 (diff)
downloadqt-creator-b5750a8d19930d238c80fb4db38974f34933852e.tar.gz
Add ticket number
Change-Id: If0413b4c3c60c10cd2b5804258a506440fe809f7 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.cpp19
-rw-r--r--src/libs/codemodelbackendipc/source/cmbcodecompletedcommand.h5
-rw-r--r--src/libs/codemodelbackendipc/source/cmbcompletecodecommand.cpp22
-rw-r--r--src/libs/codemodelbackendipc/source/cmbcompletecodecommand.h4
-rw-r--r--src/tools/codemodelbackend/ipcsource/clangipcserver.cpp2
-rw-r--r--tests/unit/codemodelbackend/unittest/clangipcservertest.cpp26
-rw-r--r--tests/unit/codemodelbackend/unittest/clientserverinprocesstest.cpp9
-rw-r--r--tests/unit/codemodelbackend/unittest/readandwritecommandblocktest.cpp2
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>