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