Skip to content

Commit d3e6e5e

Browse files
author
Evgeny Prikhodko
committed
Read/write test improved
1 parent bf9b82d commit d3e6e5e

File tree

4 files changed

+129
-84
lines changed

4 files changed

+129
-84
lines changed

tests/abstract_read_write_test.cpp

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,12 @@
1-
#include "tcp_read_write_test.h"
1+
#include "abstract_read_write_test.h"
22

3-
void libmodbus_cpp::TcpReadWriteTest::initTestCase()
4-
{
5-
m_serverStarter.reset(new ServerStarter);
6-
QThreadPool::globalInstance()->start(m_serverStarter.data());
7-
while (!m_serverStarter->isReady())
8-
QThread::msleep(50);
9-
m_master.reset(Factory::createTcpMaster("127.0.0.1", 1502));
10-
}
11-
12-
void libmodbus_cpp::TcpReadWriteTest::testConnection()
3+
void libmodbus_cpp::AbstractReadWriteTest::testConnection()
134
{
145
connect();
156
disconnect();
167
}
178

18-
void libmodbus_cpp::TcpReadWriteTest::readCoils()
9+
void libmodbus_cpp::AbstractReadWriteTest::readCoils()
1910
{
2011
connect();
2112
int size = 1;
@@ -31,7 +22,7 @@ void libmodbus_cpp::TcpReadWriteTest::readCoils()
3122
disconnect();
3223
}
3324

34-
void libmodbus_cpp::TcpReadWriteTest::readVectorOfCoils()
25+
void libmodbus_cpp::AbstractReadWriteTest::readVectorOfCoils()
3526
{
3627
connect();
3728
int size = 1;
@@ -48,7 +39,7 @@ void libmodbus_cpp::TcpReadWriteTest::readVectorOfCoils()
4839
disconnect();
4940
}
5041

51-
void libmodbus_cpp::TcpReadWriteTest::writeCoils()
42+
void libmodbus_cpp::AbstractReadWriteTest::writeCoils()
5243
{
5344
connect();
5445
int size = 1;
@@ -65,7 +56,7 @@ void libmodbus_cpp::TcpReadWriteTest::writeCoils()
6556
disconnect();
6657
}
6758

68-
void libmodbus_cpp::TcpReadWriteTest::writeVectorOfCoils()
59+
void libmodbus_cpp::AbstractReadWriteTest::writeVectorOfCoils()
6960
{
7061
connect();
7162
int size = 1;
@@ -83,7 +74,7 @@ void libmodbus_cpp::TcpReadWriteTest::writeVectorOfCoils()
8374
disconnect();
8475
}
8576

86-
void libmodbus_cpp::TcpReadWriteTest::readDiscreteInputs()
77+
void libmodbus_cpp::AbstractReadWriteTest::readDiscreteInputs()
8778
{
8879
connect();
8980
for (int i = 0; i < TABLE_SIZE; ++i) {
@@ -98,7 +89,7 @@ void libmodbus_cpp::TcpReadWriteTest::readDiscreteInputs()
9889
disconnect();
9990
}
10091

101-
void libmodbus_cpp::TcpReadWriteTest::readVectorOfDiscreteInputs()
92+
void libmodbus_cpp::AbstractReadWriteTest::readVectorOfDiscreteInputs()
10293
{
10394
connect();
10495
int size = 1;
@@ -115,168 +106,163 @@ void libmodbus_cpp::TcpReadWriteTest::readVectorOfDiscreteInputs()
115106
disconnect();
116107
}
117108

118-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_int8()
109+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_int8()
119110
{
120111
testReadFromInputRegisters<int8_t>();
121112
}
122113

123-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_uint8()
114+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_uint8()
124115
{
125116
testReadFromInputRegisters<uint8_t>();
126117
}
127118

128-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_int16()
119+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_int16()
129120
{
130121
testReadFromInputRegisters<int16_t>();
131122
}
132123

133-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_uint16()
124+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_uint16()
134125
{
135126
testReadFromInputRegisters<uint16_t>();
136127
}
137128

138-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_int32()
129+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_int32()
139130
{
140131
testReadFromInputRegisters<int32_t>();
141132
}
142133

143-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_uint32()
134+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_uint32()
144135
{
145136
testReadFromInputRegisters<uint32_t>();
146137
}
147138

148-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_float()
139+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_float()
149140
{
150141
testReadFromInputRegisters<float>();
151142
}
152143

153-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_int64()
144+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_int64()
154145
{
155146
testReadFromInputRegisters<int64_t>();
156147
}
157148

158-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_uint64()
149+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_uint64()
159150
{
160151
testReadFromInputRegisters<uint64_t>();
161152
}
162153

163-
void libmodbus_cpp::TcpReadWriteTest::readInputRegisters_double()
154+
void libmodbus_cpp::AbstractReadWriteTest::readInputRegisters_double()
164155
{
165156
testReadFromInputRegisters<double>();
166157
}
167158

168-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_int8()
159+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_int8()
169160
{
170161
testReadFromHoldingRegisters<int8_t>();
171162
}
172163

173-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_uint8()
164+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_uint8()
174165
{
175166
testReadFromHoldingRegisters<uint8_t>();
176167
}
177168

178-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_int16()
169+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_int16()
179170
{
180171
testReadFromHoldingRegisters<int16_t>();
181172
}
182173

183-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_uint16()
174+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_uint16()
184175
{
185176
testReadFromHoldingRegisters<uint16_t>();
186177
}
187178

188-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_int32()
179+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_int32()
189180
{
190181
testReadFromHoldingRegisters<int32_t>();
191182
}
192183

193-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_uint32()
184+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_uint32()
194185
{
195186
testReadFromHoldingRegisters<uint32_t>();
196187
}
197188

198-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_float()
189+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_float()
199190
{
200191
testReadFromHoldingRegisters<float>();
201192
}
202193

203-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_int64()
194+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_int64()
204195
{
205196
testReadFromHoldingRegisters<int64_t>();
206197
}
207198

208-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_uint64()
199+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_uint64()
209200
{
210201
testReadFromHoldingRegisters<uint64_t>();
211202
}
212203

213-
void libmodbus_cpp::TcpReadWriteTest::readHoldingRegisters_double()
204+
void libmodbus_cpp::AbstractReadWriteTest::readHoldingRegisters_double()
214205
{
215206
testReadFromHoldingRegisters<double>();
216207
}
217208

218-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_int8()
209+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_int8()
219210
{
220211
testWriteToHoldingRegisters<int8_t>();
221212
}
222213

223-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_uint8()
214+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_uint8()
224215
{
225216
testWriteToHoldingRegisters<uint8_t>();
226217
}
227218

228-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_int16()
219+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_int16()
229220
{
230221
testWriteToHoldingRegisters<int16_t>();
231222
}
232223

233-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_uint16()
224+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_uint16()
234225
{
235226
testWriteToHoldingRegisters<uint16_t>();
236227
}
237228

238-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_int32()
229+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_int32()
239230
{
240231
testWriteToHoldingRegisters<int32_t>();
241232
}
242233

243-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_uint32()
234+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_uint32()
244235
{
245236
testWriteToHoldingRegisters<uint32_t>();
246237
}
247238

248-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_float()
239+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_float()
249240
{
250241
testWriteToHoldingRegisters<float>();
251242
}
252243

253-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_int64()
244+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_int64()
254245
{
255246
testWriteToHoldingRegisters<int64_t>();
256247
}
257248

258-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_uint64()
249+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_uint64()
259250
{
260251
testWriteToHoldingRegisters<uint64_t>();
261252
}
262253

263-
void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_double()
254+
void libmodbus_cpp::AbstractReadWriteTest::writeReadHoldingRegisters_double()
264255
{
265256
testWriteToHoldingRegisters<double>();
266257
}
267258

268-
void libmodbus_cpp::TcpReadWriteTest::cleanupTestCase()
269-
{
270-
}
271-
272-
void libmodbus_cpp::TcpReadWriteTest::connect()
259+
void libmodbus_cpp::AbstractReadWriteTest::connect()
273260
{
274261
bool masterConnected = m_master->connect();
275262
QCOMPARE(masterConnected, true);
276263
}
277264

278-
void libmodbus_cpp::TcpReadWriteTest::disconnect()
265+
void libmodbus_cpp::AbstractReadWriteTest::disconnect()
279266
{
280267
m_master->disconnect();
281-
// m_slaveBackend->stopListen();
282268
}

tests/abstract_read_write_test.h

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,26 @@
33

44
#include <QObject>
55
#include <QtTest/QtTest>
6-
#include <atomic>
7-
#include <QThreadPool>
86

97
#include "factory.h"
108
#include "slave_tcp.h"
119
#include "master_tcp.h"
12-
13-
class ServerStarter : public QRunnable {
14-
std::atomic_bool m_ready { false };
15-
public:
16-
void run() {
17-
using namespace libmodbus_cpp;
18-
QScopedPointer<SlaveTcp> s(Factory::createTcpSlave("127.0.0.1", 1502));
19-
s->initMap(64, 64, 64, 64);
20-
for (int i = 0; i < 64; ++i) {
21-
s->setValueToCoil(i, (bool)(i & 1));
22-
s->setValueToDiscreteInput(i, !(bool)(i & 1));
23-
s->setValueToHoldingRegister(i, (uint16_t)1);
24-
s->setValueToInputRegister(i, (uint16_t)1);
25-
}
26-
s->startListen(10);
27-
m_ready = true;
28-
QEventLoop().exec();
29-
}
30-
bool isReady() const {
31-
return m_ready;
32-
}
33-
};
10+
#include "slave_rtu.h"
11+
#include "master_rtu.h"
3412

3513
namespace libmodbus_cpp {
3614

37-
class TcpReadWriteTest : public QObject
15+
const int TABLE_SIZE = 64;
16+
17+
class AbstractReadWriteTest : public QObject
3818
{
3919
Q_OBJECT
40-
static const int TABLE_SIZE = 64;
41-
QScopedPointer<ServerStarter> m_serverStarter;
42-
QScopedPointer<libmodbus_cpp::MasterTcp> m_master;
20+
21+
protected:
22+
QScopedPointer<libmodbus_cpp::AbstractMaster> m_master;
4323

4424
private slots:
45-
void initTestCase();
25+
virtual void initTestCase() = 0;
4626
void testConnection();
4727
void readCoils();
4828
void readVectorOfCoils();
@@ -80,7 +60,7 @@ private slots:
8060
void writeReadHoldingRegisters_int64();
8161
void writeReadHoldingRegisters_uint64();
8262
void writeReadHoldingRegisters_double();
83-
void cleanupTestCase();
63+
virtual void cleanupTestCase() = 0;
8464

8565
private:
8666
void connect();

tests/tcp_read_write_test.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include "tests/tcp_read_write_test.h"
2+
#include <QThreadPool>
3+
4+
void libmodbus_cpp::TcpReadWriteTest::initTestCase()
5+
{
6+
m_serverStarter = new ServerStarter;
7+
QObject::connect(this, &TcpReadWriteTest::sig_finisfed, m_serverStarter, &ServerStarter::slot_stop, Qt::QueuedConnection);
8+
QThreadPool::globalInstance()->start(m_serverStarter);
9+
while (!m_serverStarter->isReady())
10+
QThread::msleep(50);
11+
m_master.reset(Factory::createTcpMaster(TEST_IP_ADDRESS, TEST_PORT));
12+
}
13+
14+
void libmodbus_cpp::TcpReadWriteTest::cleanupTestCase()
15+
{
16+
emit sig_finisfed();
17+
// m_serverStarter will be deleted by thread pool
18+
}

0 commit comments

Comments
 (0)