X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Ftests%2FQxtFileLock%2Fsrc%2Fthreadtestcontroller.cpp;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Ftests%2FQxtFileLock%2Fsrc%2Fthreadtestcontroller.cpp;h=e1c0fd0863d23caec65575b59df2617426bc3121;hp=0000000000000000000000000000000000000000;hb=a634acadbcf6017474f68a3eaf7cb632660e9e49;hpb=cd122ca8e0d2c0ffc5397e0a813c75d791a7e6e3 diff --git a/src/contrib/libqxt-2007-10-24/tests/QxtFileLock/src/threadtestcontroller.cpp b/src/contrib/libqxt-2007-10-24/tests/QxtFileLock/src/threadtestcontroller.cpp new file mode 100644 index 00000000..e1c0fd08 --- /dev/null +++ b/src/contrib/libqxt-2007-10-24/tests/QxtFileLock/src/threadtestcontroller.cpp @@ -0,0 +1,102 @@ +#include "threadtestcontroller.h" +#include +#include +#include + +#include +#include +#include + +ThreadTestController::ThreadTestController(QObject *parent) + : QObject(parent) +{ + server = new QTcpServer(this); + connect(server,SIGNAL(newConnection ()),this,SLOT(doTests())); +} + + +ThreadTestController::~ThreadTestController() +{ +} + +void ThreadTestController::doTests() +{ + QTcpSocket *socket = server->nextPendingConnection(); + QFile file("lock.file"); + + #define DoNextTest() socket->putChar('n');\ + if(socket->waitForReadyRead(-1))\ + {\ + socket->getChar(&testResult);\ + if(testResult == 'f')\ + qDebug()<<"----Test failed----";\ + else if(testResult == 's')\ + qDebug()<<"----Test passed----";\ + else\ + qDebug()<<"----Wrong result value----";\ + }\ + else qDebug()<<"No ready read"; + + if(socket && file.open(QIODevice::ReadWrite)) + { + char testResult = 'f'; + + if(1) + { + qDebug()<<"----Starting next test-----"; + qDebug()<<"Trying to readlock the same region "; + QxtFileLock lock(&file,0x10,20,QxtFileLock::ReadLock); + if(lock.lock()) + { + DoNextTest(); + } + } + + if(1) + { + qDebug()<<"----Starting next test-----"; + qDebug()<<"Trying to lock the same region with different locks"; + QxtFileLock lock(&file,0x10,20,QxtFileLock::ReadLock); + if(lock.lock()) + { + DoNextTest(); + } + } + + if(1) + { + qDebug()<<"----Starting next test-----"; + qDebug()<<"Trying to writelock the same region twice"; + QxtFileLock lock(&file,0x10,20,QxtFileLock::WriteLock); + if(lock.lock()) + { + DoNextTest(); + } + } + + if(1) + { + qDebug()<<"----Starting next test-----"; + qDebug()<<"Trying to writelock different regions"; + QxtFileLock lock(&file,0x10,20,QxtFileLock::WriteLock); + if(lock.lock()) + { + DoNextTest(); + } + } + + } + QCoreApplication::instance()->exit(); +} + +bool ThreadTestController::startTests() +{ + if (!server->listen(QHostAddress::Any,55555)) + { + qDebug()<<"Could not start listening Server "<serverError(); + return false; + } + return true; +} + +