18 #include <gtest/gtest.h> 25 #include <modbus/modbus.h> 52 static void SetUpTestCase();
53 void TearDown()
override;
54 unsigned int testPort();
73 std::iota(PORTS_FOR_TEST.begin(), PORTS_FOR_TEST.end(),
START_PORT);
79 RegCont reg_to_write_by_client {1};
120 server->startAsync(
LOCALHOST, testPort());
124 shutdownModbusServer(server.get(), client);
144 server->startAsync(
LOCALHOST, testPort());
152 EXPECT_EQ(res_expected, res);
154 shutdownModbusServer(server.get(), client);
165 server->startAsync(
LOCALHOST, testPort());
172 RegCont reg_to_write_by_client {8, 3, 7};
179 EXPECT_EQ(res_expected, res);
182 for (RegCont::size_type i = 0; i < reg_to_write_by_client.size(); ++i)
184 EXPECT_EQ(reg_to_write_by_client.at(i), actual_hold_reg.at(i));
187 shutdownModbusServer(server.get(), client);
200 server->startAsync(
LOCALHOST, testPort());
206 const int negative_read_nb {-2};
207 RegCont reg_to_write_by_client {8, 3, 7};
210 std::invalid_argument);
212 shutdownModbusServer(server.get(), client);
224 server->startAsync(
LOCALHOST, testPort());
231 RegCont reg_to_write_by_client(static_cast<unsigned int>(std::numeric_limits<int>::max()) + 1u, 0);
234 std::invalid_argument);
236 shutdownModbusServer(server.get(), client);
263 server->startAsync(
LOCALHOST, testPort());
269 shutdownModbusServer(server.get(), client);
271 RegCont reg_to_write_by_client {8, 3, 7};
297 server->startAsync(
LOCALHOST, testPort());
301 shutdownModbusServer(server.get(), client);
316 server->startAsync(
LOCALHOST, testPort());
318 unsigned long timeout_ms = 3;
324 shutdownModbusServer(server.get(), client);
330 int main(
int argc,
char *argv[])
332 testing::InitGoogleTest(&argc, argv);
333 return RUN_ALL_TESTS();
Offers a modbus server and read/write functionality via subscription/publication. ...
RegCont readHoldingRegister(int addr, int nb) override
See base class.
std::vector< uint16_t > RegCont
Convenience data type defining the data type for a collection of registers.
void close()
Close connection with server.
static void SetUpTestCase()
int main(int argc, char *argv[])
constexpr unsigned int DEFAULT_READ_IDX
bool init(const char *ip, unsigned int port) override
See base class.
RegCont writeReadHoldingRegister(const int write_addr, const RegCont &write_reg, const int read_addr, const int read_nb) override
See base class.
constexpr unsigned int START_PORT
static std::vector< unsigned int > PORTS_FOR_TEST(END_PORT-START_PORT)
constexpr unsigned int DEFAULT_REGISTER_SIZE
void setResponseTimeoutInMs(unsigned long timeout_ms) override
See base class.
TEST_F(LibModbusClientTest, testModbusClientDtor)
Test increases function coverage by ensuring that all Dtor variants are called.
unsigned long getResponseTimeoutInMs() override
See base class.
void terminate()
Terminate the Server. Reading or connecting to it will fail.
static unsigned int ACTIVE_PORT_IDX
constexpr unsigned int DEFAULT_WRITE_IDX
constexpr const char *const LOCALHOST
Wrapper around libmodbus, see https://libmodbus.org/.
Expection thrown by prbt_hardware_support::LibModbusClient::readHoldingRegister if a disconnect from ...
void shutdownModbusServer(PilzModbusServerMock *server, LibModbusClient &client)
constexpr unsigned int END_PORT