forked from qt-creator/qt-creator
TaskTree tests: Add tests triggering runtime asserts
This addresses the 15th point in the master task below. Task-number: QTCREATORBUG-28741 Change-Id: I9d449a6ce1538071f300b68b2929bcd437d1bb0f Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -959,30 +959,30 @@ void GroupItem::addChildren(const QList<GroupItem> &children)
|
||||
case Type::GroupData:
|
||||
if (child.m_groupData.m_groupHandler.m_setupHandler) {
|
||||
QTC_ASSERT(!m_groupData.m_groupHandler.m_setupHandler,
|
||||
qWarning("Group Setup Handler redefinition, overriding..."));
|
||||
qWarning("Group setup handler redefinition, overriding..."));
|
||||
m_groupData.m_groupHandler.m_setupHandler
|
||||
= child.m_groupData.m_groupHandler.m_setupHandler;
|
||||
}
|
||||
if (child.m_groupData.m_groupHandler.m_doneHandler) {
|
||||
QTC_ASSERT(!m_groupData.m_groupHandler.m_doneHandler,
|
||||
qWarning("Group Done Handler redefinition, overriding..."));
|
||||
qWarning("Group done handler redefinition, overriding..."));
|
||||
m_groupData.m_groupHandler.m_doneHandler
|
||||
= child.m_groupData.m_groupHandler.m_doneHandler;
|
||||
}
|
||||
if (child.m_groupData.m_parallelLimit) {
|
||||
QTC_ASSERT(!m_groupData.m_parallelLimit,
|
||||
qWarning("Group Execution Mode redefinition, overriding..."));
|
||||
qWarning("Group execution mode redefinition, overriding..."));
|
||||
m_groupData.m_parallelLimit = child.m_groupData.m_parallelLimit;
|
||||
}
|
||||
if (child.m_groupData.m_workflowPolicy) {
|
||||
QTC_ASSERT(!m_groupData.m_workflowPolicy,
|
||||
qWarning("Group Workflow Policy redefinition, overriding..."));
|
||||
qWarning("Group workflow policy redefinition, overriding..."));
|
||||
m_groupData.m_workflowPolicy = child.m_groupData.m_workflowPolicy;
|
||||
}
|
||||
break;
|
||||
case Type::TaskHandler:
|
||||
QTC_ASSERT(child.m_taskHandler.m_createHandler,
|
||||
qWarning("Task Create Handler can't be null, skipping..."); return);
|
||||
qWarning("Task create handler can't be null, skipping..."); return);
|
||||
m_children.append(child);
|
||||
break;
|
||||
case Type::Storage:
|
||||
|
@@ -94,6 +94,7 @@ class tst_Tasking : public QObject
|
||||
|
||||
private slots:
|
||||
void validConstructs(); // compile test
|
||||
void runtimeCheck(); // checks done on runtime
|
||||
void testTree_data();
|
||||
void testTree();
|
||||
void testInThread_data();
|
||||
@@ -254,6 +255,74 @@ void tst_Tasking::validConstructs()
|
||||
#endif
|
||||
}
|
||||
|
||||
void tst_Tasking::runtimeCheck()
|
||||
{
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Can't add the same storage into one Group twice, skipping...");
|
||||
const TreeStorage<int> storage;
|
||||
|
||||
Group {
|
||||
Storage(storage),
|
||||
Storage(storage),
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Can't add the same storage into one Group twice, skipping...");
|
||||
const TreeStorage<int> storage1;
|
||||
const auto storage2 = storage1;
|
||||
|
||||
Group {
|
||||
Storage(storage1),
|
||||
Storage(storage2),
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Group setup handler redefinition, overriding...");
|
||||
Group {
|
||||
onGroupSetup([] {}),
|
||||
onGroupSetup([] {}),
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Group done handler redefinition, overriding...");
|
||||
Group {
|
||||
onGroupDone([] {}),
|
||||
onGroupDone([] {}),
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Group execution mode redefinition, overriding...");
|
||||
Group {
|
||||
sequential,
|
||||
sequential,
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
QTest::ignoreMessage(QtDebugMsg, QRegularExpression("^SOFT ASSERT: "));
|
||||
QTest::ignoreMessage(QtWarningMsg,
|
||||
"Group workflow policy redefinition, overriding...");
|
||||
Group {
|
||||
stopOnError,
|
||||
stopOnError,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class TickAndDone : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
Reference in New Issue
Block a user