We now have a current svn snapshot of libqxt in our contrib dir, and
[quassel.git] / src / contrib / libqxt-2007-10-24 / tests / QxtFileLock / src / threadtestcontroller.cpp
1 #include "threadtestcontroller.h"
2 #include <QTcpServer>
3 #include <QTcpSocket>
4 #include <QDebug>
5
6 #include <QFile>
7 #include <QxtFileLock>
8 #include <QCoreApplication>
9
10 ThreadTestController::ThreadTestController(QObject *parent)
11  : QObject(parent)
12 {
13     server = new QTcpServer(this);
14     connect(server,SIGNAL(newConnection ()),this,SLOT(doTests()));
15 }
16
17
18 ThreadTestController::~ThreadTestController()
19 {
20 }
21
22 void ThreadTestController::doTests()
23 {
24     QTcpSocket *socket = server->nextPendingConnection();
25     QFile file("lock.file");
26     
27     #define DoNextTest()             socket->putChar('n');\
28                                                     if(socket->waitForReadyRead(-1))\
29                                                     {\
30                                                         socket->getChar(&testResult);\
31                                                         if(testResult == 'f')\
32                                                             qDebug()<<"----Test failed----";\
33                                                         else if(testResult == 's')\
34                                                             qDebug()<<"----Test passed----";\
35                                                         else\
36                                                             qDebug()<<"----Wrong result value----";\
37                                                     }\
38                                                     else qDebug()<<"No ready read";
39     
40     if(socket  && file.open(QIODevice::ReadWrite))
41     {
42         char testResult = 'f';
43         
44         if(1)
45         {
46             qDebug()<<"----Starting next test-----";
47             qDebug()<<"Trying to readlock the same region ";
48             QxtFileLock lock(&file,0x10,20,QxtFileLock::ReadLock);
49             if(lock.lock())
50             {
51                     DoNextTest();
52             }
53         }
54         
55         if(1)
56         {
57             qDebug()<<"----Starting next test-----";
58             qDebug()<<"Trying to lock the same region with different locks";
59             QxtFileLock lock(&file,0x10,20,QxtFileLock::ReadLock);
60             if(lock.lock())
61             {
62                 DoNextTest();
63             }
64         }
65         
66         if(1)
67         {
68             qDebug()<<"----Starting next test-----";
69             qDebug()<<"Trying to writelock the same region twice";
70             QxtFileLock lock(&file,0x10,20,QxtFileLock::WriteLock);
71             if(lock.lock())
72             {
73                 DoNextTest();
74             }
75         }
76         
77         if(1)
78         {
79             qDebug()<<"----Starting next test-----";
80             qDebug()<<"Trying to writelock different regions";
81             QxtFileLock lock(&file,0x10,20,QxtFileLock::WriteLock);
82             if(lock.lock())
83             {
84                 DoNextTest();
85             }
86         }
87         
88     }
89     QCoreApplication::instance()->exit();
90 }
91
92 bool ThreadTestController::startTests()
93 {
94     if (!server->listen(QHostAddress::Any,55555))
95     {
96             qDebug()<<"Could not start listening Server "<<server->serverError();
97         return false;
98     }
99     return true;
100 }
101
102