#include #include #include "utils/lfqueue.h" #include "tst_lfqueue.h" void TestLFQueue::setSize_data() { QTest::addColumn("size"); QTest::addColumn("result"); QTest::newRow("-1") << -1 << false; QTest::newRow("0") << 0 << true; QTest::newRow("10") << 10 << true; QTest::newRow("2000") << 20000 << true; } void TestLFQueue::setSize() { QFETCH(int, size); QFETCH(bool, result); LFQueue queue; QCOMPARE(queue.setSize(size), result); } void readerThread(LFQueue* pQueue_p, int pSize, bool pSleep) { int* val_p; for(int i=0; ipeek()) ); QVERIFY(val_p); QCOMPARE(*val_p, i); pQueue_p->dequeue(); if(pSleep) QThread::msleep(1); } } void TestLFQueue::exchange_data() { QTest::addColumn("size"); QTest::addColumn("writerSleep"); QTest::addColumn("readerSleep"); QTest::newRow("nosleep") << 1000 << false << false; QTest::newRow("readersleep") << 1000 << false << true; QTest::newRow("writersleep") << 1000 << true << false; } void TestLFQueue::exchange() { LFQueue queue; QFETCH(int, size); QFETCH(bool, writerSleep); QFETCH(bool, readerSleep); int* val_p; QCOMPARE(queue.setSize(2), true); QFuture thread = QtConcurrent::run(readerThread, &queue, size, readerSleep); for(int i=0; i