File indexing completed on 2024-04-28 15:34:48

0001 /* -*- C++ -*-
0002     This file contains a testsuite for job processing in ThreadWeaver.
0003 
0004     SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <mirko@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #ifndef JOBTESTS_H
0010 #define JOBTESTS_H
0011 
0012 #include <QObject>
0013 #include <ThreadWeaver/JobPointer>
0014 
0015 namespace ThreadWeaver
0016 {
0017 class Job;
0018 }
0019 
0020 using ThreadWeaver::Job;
0021 
0022 class JobTests : public QObject
0023 {
0024     Q_OBJECT
0025 
0026 private Q_SLOTS:
0027 
0028     void initTestCase();
0029     void WeaverLazyThreadCreationTest();
0030     void ReduceWorkerCountTest();
0031     void SimpleJobTest();
0032     void SimpleJobCollectionTest();
0033     void EmptyJobCollectionTest();
0034     void CollectionQueueingTest();
0035     void GeneratingCollectionTest();
0036     void ShortJobSequenceTest();
0037     void ShortDecoratedJobSequenceTest();
0038     void EmptyJobSequenceTest();
0039     void GeneratingSequenceTest();
0040     void IncompleteCollectionTest();
0041     void EmitStartedOnFirstElementTest();
0042     void CollectionDependenciesTest();
0043     void QueueAndDequeueCollectionTest();
0044     void QueueAndDequeueSequenceTest();
0045     void BlockingExecuteTest();
0046     void RecursiveSequenceTest();
0047     void RecursiveQueueAndDequeueCollectionTest();
0048     void RecursiveQueueAndDequeueSequenceTest();
0049     void QueueAndDequeueAllCollectionTest();
0050     void QueueAndDequeueAllSequenceTest();
0051     void RecursiveQueueAndDequeueAllCollectionTest();
0052     void RecursiveQueueAndDequeueAllSequenceTest();
0053     void MassiveJobSequenceTest();
0054     void SimpleRecursiveSequencesTest();
0055     void SequenceOfSequencesTest();
0056     void QueueAndStopTest();
0057     void ResourceRestrictionPolicyBasicsTest();
0058     void JobSignalsAreEmittedAsynchronouslyTest();
0059     void JobSignalsDeliveryTest();
0060     void JobPointerExecutionTest();
0061     void DequeueSuspendedSequenceTest();
0062     void IdDecoratorDecoratesTest();
0063     void IdDecoratorAutoDeleteTest();
0064     void IdDecoratorSingleAllocationTest();
0065     void JobsAreDestroyedAfterFinishTest();
0066     void JobExitStatusByExceptionTest();
0067     void JobManualExitStatusTest();
0068     void QueueStreamLifecycleTest();
0069     void NestedGeneratingCollectionsTest();
0070     void NestedGeneratingSequencesTest();
0071     void DeeperNestedGeneratingCollectionsTest();
0072 
0073 public Q_SLOTS: // slots used during tests that are not test cases
0074     void jobStarted(ThreadWeaver::JobPointer);
0075     void jobDone(ThreadWeaver::JobPointer);
0076 
0077     void deliveryTestJobDone(ThreadWeaver::JobPointer);
0078 };
0079 
0080 #endif