#include #include #include "lfqueue.h" class TestLFQueue: public QObject { Q_OBJECT private: private slots: void setSize_data(); void setSize(); void exchange_data(); void exchange(); }; 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