Commit 79c1bd3dace8fb7bd44d98a08f0ebd6341446f00

Authored by Stéphane Raimbault
1 parent 933ed4d3

Use new modbus_mapping_new_start_address in unit tests

tests/unit-test-client.c
... ... @@ -146,8 +146,7 @@ int main(int argc, char *argv[])
146 146 uint8_t tab_value[UT_BITS_NB];
147 147  
148 148 modbus_set_bits_from_bytes(tab_value, 0, UT_BITS_NB, UT_BITS_TAB);
149   - rc = modbus_write_bits(ctx, UT_BITS_ADDRESS,
150   - UT_BITS_NB, tab_value);
  149 + rc = modbus_write_bits(ctx, UT_BITS_ADDRESS, UT_BITS_NB, tab_value);
151 150 printf("1/2 modbus_write_bits: ");
152 151 ASSERT_TRUE(rc == UT_BITS_NB, "");
153 152 }
... ... @@ -325,7 +324,7 @@ int main(int argc, char *argv[])
325 324 ASSERT_TRUE(rc == -1 && errno == EMBXILADD, "");
326 325  
327 326 rc = modbus_read_registers(ctx, UT_REGISTERS_ADDRESS,
328   - UT_REGISTERS_NB + 1, tab_rp_registers);
  327 + UT_REGISTERS_NB_MAX + 1, tab_rp_registers);
329 328 printf("* modbus_read_registers: ");
330 329 ASSERT_TRUE(rc == -1 && errno == EMBXILADD, "");
331 330  
... ... @@ -344,12 +343,12 @@ int main(int argc, char *argv[])
344 343 printf("* modbus_write_coils: ");
345 344 ASSERT_TRUE(rc == -1 && errno == EMBXILADD, "");
346 345  
347   - rc = modbus_write_register(ctx, UT_REGISTERS_ADDRESS + UT_REGISTERS_NB,
  346 + rc = modbus_write_register(ctx, UT_REGISTERS_ADDRESS + UT_REGISTERS_NB_MAX,
348 347 tab_rp_registers[0]);
349 348 printf("* modbus_write_register: ");
350 349 ASSERT_TRUE(rc == -1 && errno == EMBXILADD, "");
351 350  
352   - rc = modbus_write_registers(ctx, UT_REGISTERS_ADDRESS + UT_REGISTERS_NB,
  351 + rc = modbus_write_registers(ctx, UT_REGISTERS_ADDRESS + UT_REGISTERS_NB_MAX,
353 352 UT_REGISTERS_NB, tab_rp_registers);
354 353 printf("* modbus_write_registers: ");
355 354 ASSERT_TRUE(rc == -1 && errno == EMBXILADD, "");
... ... @@ -639,8 +638,10 @@ int test_server(modbus_t *ctx, int use_backend)
639 638 uint8_t read_raw_req[] = {
640 639 /* slave */
641 640 (use_backend == RTU) ? SERVER_ID : 0xFF,
642   - /* function, addr 1, 5 values */
643   - MODBUS_FC_READ_HOLDING_REGISTERS, 0x00, 0x01, 0x0, 0x05
  641 + /* function, address, 5 values */
  642 + MODBUS_FC_READ_HOLDING_REGISTERS,
  643 + UT_REGISTERS_ADDRESS >> 8, UT_REGISTERS_ADDRESS & 0xFF,
  644 + 0x0, 0x05
644 645 };
645 646 /* Write and read registers request */
646 647 const int RW_RAW_REQ_LEN = 13;
... ... @@ -650,7 +651,7 @@ int test_server(modbus_t *ctx, int use_backend)
650 651 /* function, addr to read, nb to read */
651 652 MODBUS_FC_WRITE_AND_READ_REGISTERS,
652 653 /* Read */
653   - 0, 0,
  654 + UT_REGISTERS_ADDRESS >> 8, UT_REGISTERS_ADDRESS & 0xFF,
654 655 (MODBUS_MAX_WR_READ_REGISTERS + 1) >> 8,
655 656 (MODBUS_MAX_WR_READ_REGISTERS + 1) & 0xFF,
656 657 /* Write */
... ... @@ -668,8 +669,7 @@ int test_server(modbus_t *ctx, int use_backend)
668 669 /* function will be set in the loop */
669 670 MODBUS_FC_WRITE_MULTIPLE_REGISTERS,
670 671 /* Address */
671   - UT_REGISTERS_ADDRESS >> 8,
672   - UT_REGISTERS_ADDRESS & 0xFF,
  672 + UT_REGISTERS_ADDRESS >> 8, UT_REGISTERS_ADDRESS & 0xFF,
673 673 /* 3 values, 6 bytes */
674 674 0x00, 0x03, 0x06,
675 675 /* Dummy data to write */
... ... @@ -711,8 +711,7 @@ int test_server(modbus_t *ctx, int use_backend)
711 711 ASSERT_TRUE(rc == (backend_length + 12), "FAILED (%d)\n", rc);
712 712  
713 713 /* Try to read more values than a response could hold for all data
714   - * types.
715   - */
  714 + types. */
716 715 for (i=0; i<4; i++) {
717 716 rc = send_crafted_request(ctx, tab_read_function[i],
718 717 read_raw_req, READ_RAW_REQ_LEN,
... ...
tests/unit-test-server.c
... ... @@ -71,11 +71,11 @@ int main(int argc, char*argv[])
71 71  
72 72 modbus_set_debug(ctx, TRUE);
73 73  
74   - mb_mapping = modbus_mapping_new(
75   - UT_BITS_ADDRESS + UT_BITS_NB,
76   - UT_INPUT_BITS_ADDRESS + UT_INPUT_BITS_NB,
77   - UT_REGISTERS_ADDRESS + UT_REGISTERS_NB,
78   - UT_INPUT_REGISTERS_ADDRESS + UT_INPUT_REGISTERS_NB);
  74 + mb_mapping = modbus_mapping_new_start_address(
  75 + UT_BITS_ADDRESS, UT_BITS_NB,
  76 + UT_INPUT_BITS_ADDRESS, UT_INPUT_BITS_NB,
  77 + UT_REGISTERS_ADDRESS, UT_REGISTERS_NB_MAX,
  78 + UT_INPUT_REGISTERS_ADDRESS, UT_INPUT_REGISTERS_NB);
79 79 if (mb_mapping == NULL) {
80 80 fprintf(stderr, "Failed to allocate the mapping: %s\n",
81 81 modbus_strerror(errno));
... ... @@ -83,44 +83,16 @@ int main(int argc, char*argv[])
83 83 return -1;
84 84 }
85 85  
86   - /* Unit tests of modbus_mapping_new (tests would not be sufficient if two
87   - nb_* were identical) */
88   - if (mb_mapping->nb_bits != UT_BITS_ADDRESS + UT_BITS_NB) {
89   - printf("Invalid nb bits (%d != %d)\n", UT_BITS_ADDRESS + UT_BITS_NB, mb_mapping->nb_bits);
90   - modbus_free(ctx);
91   - return -1;
92   - }
93   -
94   - if (mb_mapping->nb_input_bits != UT_INPUT_BITS_ADDRESS + UT_INPUT_BITS_NB) {
95   - printf("Invalid nb input bits: %d\n", UT_INPUT_BITS_ADDRESS + UT_INPUT_BITS_NB);
96   - modbus_free(ctx);
97   - return -1;
98   - }
99   -
100   - if (mb_mapping->nb_registers != UT_REGISTERS_ADDRESS + UT_REGISTERS_NB) {
101   - printf("Invalid nb registers: %d\n", UT_REGISTERS_ADDRESS + UT_REGISTERS_NB);
102   - modbus_free(ctx);
103   - return -1;
104   - }
105   -
106   - if (mb_mapping->nb_input_registers != UT_INPUT_REGISTERS_ADDRESS + UT_INPUT_REGISTERS_NB) {
107   - printf("Invalid nb input registers: %d\n", UT_INPUT_REGISTERS_ADDRESS + UT_INPUT_REGISTERS_NB);
108   - modbus_free(ctx);
109   - return -1;
110   - }
111   -
112 86 /* Examples from PI_MODBUS_300.pdf.
113 87 Only the read-only input values are assigned. */
114 88  
115   - /** INPUT STATUS **/
116   - modbus_set_bits_from_bytes(mb_mapping->tab_input_bits,
117   - UT_INPUT_BITS_ADDRESS, UT_INPUT_BITS_NB,
  89 + /* Initialize input values that's can be only done server side. */
  90 + modbus_set_bits_from_bytes(mb_mapping->tab_input_bits, 0, UT_INPUT_BITS_NB,
118 91 UT_INPUT_BITS_TAB);
119 92  
120   - /** INPUT REGISTERS **/
  93 + /* Initialize values of INPUT REGISTERS */
121 94 for (i=0; i < UT_INPUT_REGISTERS_NB; i++) {
122   - mb_mapping->tab_input_registers[UT_INPUT_REGISTERS_ADDRESS+i] =
123   - UT_INPUT_REGISTERS_TAB[i];;
  95 + mb_mapping->tab_input_registers[i] = UT_INPUT_REGISTERS_TAB[i];;
124 96 }
125 97  
126 98 if (use_backend == TCP) {
... ...
tests/unit-test.h.in
... ... @@ -25,7 +25,6 @@
25 25 #define SERVER_ID 17
26 26 #define INVALID_SERVER_ID 18
27 27  
28   -/* Server allocates address + nb */
29 28 const uint16_t UT_BITS_ADDRESS = 0x130;
30 29 const uint16_t UT_BITS_NB = 0x25;
31 30 const uint8_t UT_BITS_TAB[] = { 0xCD, 0x6B, 0xB2, 0x0E, 0x1B };
... ... @@ -34,18 +33,20 @@ const uint16_t UT_INPUT_BITS_ADDRESS = 0x1C4;
34 33 const uint16_t UT_INPUT_BITS_NB = 0x16;
35 34 const uint8_t UT_INPUT_BITS_TAB[] = { 0xAC, 0xDB, 0x35 };
36 35  
37   -const uint16_t UT_REGISTERS_ADDRESS = 0x16B;
  36 +const uint16_t UT_REGISTERS_ADDRESS = 0x160;
  37 +const uint16_t UT_REGISTERS_NB = 0x3;
  38 +const uint16_t UT_REGISTERS_NB_MAX = 0x20;
  39 +const uint16_t UT_REGISTERS_TAB[] = { 0x022B, 0x0001, 0x0064 };
  40 +
38 41 /* Raise a manual exception when this address is used for the first byte */
39   -const uint16_t UT_REGISTERS_ADDRESS_SPECIAL = 0x6C;
  42 +const uint16_t UT_REGISTERS_ADDRESS_SPECIAL = 0x170;
40 43 /* The response of the server will contains an invalid TID or slave */
41   -const uint16_t UT_REGISTERS_ADDRESS_INVALID_TID_OR_SLAVE = 0x6D;
  44 +const uint16_t UT_REGISTERS_ADDRESS_INVALID_TID_OR_SLAVE = 0x171;
42 45 /* The server will wait for 1 second before replying to test timeout */
43   -const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS = 0x6E;
  46 +const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS = 0x172;
44 47 /* The server will wait for 5 ms before sending each byte */
45   -const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS = 0x6F;
  48 +const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS = 0x173;
46 49  
47   -const uint16_t UT_REGISTERS_NB = 0x3;
48   -const uint16_t UT_REGISTERS_TAB[] = { 0x022B, 0x0001, 0x0064 };
49 50 /* If the following value is used, a bad response is sent.
50 51 It's better to test with a lower value than
51 52 UT_REGISTERS_NB_POINTS to try to raise a segfault. */
... ...