1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/* -*- C++ -*-
This file contains a testsuite for the queueing behaviour in ThreadWeaver.
SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <mirko@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef QUEUETESTS_H
#define QUEUETESTS_H
#include <QThread>
#include "AppendCharacterJob.h"
class LowPriorityAppendCharacterJob : public AppendCharacterJob
{
public:
LowPriorityAppendCharacterJob(QChar character = QChar(), QString *stringref = nullptr);
int priority() const override;
};
class HighPriorityAppendCharacterJob : public AppendCharacterJob
{
public:
HighPriorityAppendCharacterJob(QChar character = QChar(), QString *stringref = nullptr);
int priority() const override;
};
namespace ThreadWeaver
{
class Job;
class Collection;
class QObjectDecorator;
}
using ThreadWeaver::Job;
class SecondThreadThatQueues : public QThread
{
Q_OBJECT
public:
SecondThreadThatQueues();
protected:
void run() override;
};
class QueueTests : public QObject
{
Q_OBJECT
public:
explicit QueueTests(QObject *parent = nullptr);
public Q_SLOTS:
// this slot (which is not a test) is part of
// DeleteDoneJobsFromSequenceTest
void deleteJob(ThreadWeaver::JobPointer);
// this slot is part of DeleteCollectionOnDoneTest
void deleteCollection(ThreadWeaver::JobPointer);
private:
// this is also part of DeleteDoneJobsFromSequenceTest
ThreadWeaver::QObjectDecorator *autoDeleteJob;
// this is part of DeleteCollectionOnDoneTest
ThreadWeaver::QObjectDecorator *autoDeleteCollection;
private Q_SLOTS:
void initTestCase();
void SimpleQueuePrioritiesTest();
void WeaverInitializationTest();
void QueueFromSecondThreadTest();
void DeleteDoneJobsFromSequenceTest();
void DeleteCollectionOnDoneTest();
};
#endif
|