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

0001 /* -*- C++ -*-
0002     This file contains a testsuite for sequences 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 #include <QCoreApplication>
0010 #include <QString>
0011 #include <QTest>
0012 
0013 #include <ThreadWeaver/DebuggingAids>
0014 #include <ThreadWeaver/ThreadWeaver>
0015 
0016 #include "AppendCharacterJob.h"
0017 #include "JobLoggingWeaver.h"
0018 #include "SequencesTests.h"
0019 #include "WaitForIdleAndFinished.h"
0020 
0021 using namespace ThreadWeaver;
0022 
0023 QMutex s_GlobalMutex;
0024 
0025 SequencesTests::SequencesTests()
0026 {
0027     setDebugLevel(true, 1);
0028 }
0029 
0030 void SequencesTests::RecursiveStopTest()
0031 {
0032     //    auto logger = new JobLoggingWeaver();
0033     //    Queue queue(logger);
0034     Queue queue;
0035     WAITFORIDLEANDFINISHED(&queue);
0036     QString result;
0037     Sequence innerSequence;
0038     innerSequence << new AppendCharacterJob('b', &result) //
0039                   << new FailingAppendCharacterJob('c', &result) //
0040                   << new AppendCharacterJob('d', &result);
0041 
0042     Sequence outerSequence;
0043     outerSequence << new AppendCharacterJob('a', &result) //
0044                   << innerSequence //
0045                   << new AppendCharacterJob('e', &result);
0046 
0047     queue.stream() << outerSequence;
0048     queue.finish();
0049     QCOMPARE(result, QString::fromLatin1("abc"));
0050 }
0051 
0052 QTEST_MAIN(SequencesTests)
0053 
0054 #include "moc_SequencesTests.cpp"