Commit 861e6a84b9bc5d2f5de68defdf8b8ebdf737a59d

Authored by Stéphane Raimbault
1 parent adbc98bc

New tests

Showing 1 changed file with 81 additions and 22 deletions
tests/unit-test-master.c
... ... @@ -38,13 +38,14 @@ int main(void)
38 38 uint8_t value;
39 39 uint16_t address;
40 40 uint16_t nb_points;
  41 + int ret;
41 42  
42 43 /* RTU parity : none, even, odd */
43 44 /* modbus_init_rtu(&mb_param, "/dev/ttyS0", 19200, "none", 8, 1); */
44 45  
45 46 /* TCP */
46 47 modbus_init_tcp(&mb_param, "127.0.0.1", 1502);
47   - modbus_set_debug(&mb_param, TRUE);
  48 +// modbus_set_debug(&mb_param, TRUE);
48 49  
49 50 modbus_connect(&mb_param);
50 51  
... ... @@ -60,11 +61,18 @@ int main(void)
60 61 tab_rp_registers = (uint16_t *) malloc(nb_points * sizeof(uint16_t));
61 62 memset(tab_rp_registers, 0, nb_points * sizeof(uint16_t));
62 63  
63   - printf("Unit testing\n");
  64 + printf("UNIT TESTING\n");
  65 +
  66 + printf("Test read functions:\n");
64 67  
65 68 /** COIL STATUS **/
66   - read_coil_status(&mb_param, SLAVE, UT_COIL_STATUS_ADDRESS,
67   - UT_COIL_STATUS_NB_POINTS, tab_rp_status);
  69 + ret = read_coil_status(&mb_param, SLAVE, UT_COIL_STATUS_ADDRESS,
  70 + UT_COIL_STATUS_NB_POINTS, tab_rp_status);
  71 + printf("* coil status: ");
  72 + if (ret != UT_COIL_STATUS_NB_POINTS) {
  73 + printf("FAILED (nb points %d)\n", ret);
  74 + goto close;
  75 + }
68 76  
69 77 i = 0;
70 78 address = UT_COIL_STATUS_ADDRESS;
... ... @@ -74,7 +82,7 @@ int main(void)
74 82  
75 83 value = get_byte_from_bits(tab_rp_status, i*8, nb_bits);
76 84 if (value != UT_COIL_STATUS_TAB[i]) {
77   - printf("Coil status: FAILED (%0X != %0X)\n",
  85 + printf("FAILED (%0X != %0X)\n",
78 86 value, UT_COIL_STATUS_TAB[i]);
79 87 goto close;
80 88 }
... ... @@ -82,12 +90,17 @@ int main(void)
82 90 nb_points -= nb_bits;
83 91 i++;
84 92 }
85   - printf("Coil status: OK\n");
86   -
  93 + printf("OK\n");
87 94  
88 95 /** INPUT STATUS **/
89   - read_input_status(&mb_param, SLAVE, UT_INPUT_STATUS_ADDRESS,
90   - UT_INPUT_STATUS_NB_POINTS, tab_rp_status);
  96 + ret = read_input_status(&mb_param, SLAVE, UT_INPUT_STATUS_ADDRESS,
  97 + UT_INPUT_STATUS_NB_POINTS, tab_rp_status);
  98 + printf("* input status :");
  99 +
  100 + if (ret != UT_INPUT_STATUS_NB_POINTS) {
  101 + printf("FAILED (nb points %d)\n", ret);
  102 + goto close;
  103 + }
91 104  
92 105 i = 0;
93 106 address = UT_INPUT_STATUS_ADDRESS;
... ... @@ -97,7 +110,7 @@ int main(void)
97 110  
98 111 value = get_byte_from_bits(tab_rp_status, i*8, nb_bits);
99 112 if (value != UT_INPUT_STATUS_TAB[i]) {
100   - printf("Input status: FAILED (%0X != %0X)\n",
  113 + printf("FAILED (%0X != %0X)\n",
101 114 value, UT_INPUT_STATUS_TAB[i]);
102 115 goto close;
103 116 }
... ... @@ -105,37 +118,83 @@ int main(void)
105 118 nb_points -= nb_bits;
106 119 i++;
107 120 }
108   - printf("Input status: OK\n");
  121 + printf("OK\n");
109 122  
110 123 /** HOLDING REGISTERS **/
111   - read_holding_registers(&mb_param, SLAVE, UT_HOLDING_REGISTERS_ADDRESS,
112   - UT_HOLDING_REGISTERS_NB_POINTS, tab_rp_registers);
  124 + ret = read_holding_registers(&mb_param, SLAVE, UT_HOLDING_REGISTERS_ADDRESS,
  125 + UT_HOLDING_REGISTERS_NB_POINTS, tab_rp_registers);
  126 + printf("* holding registers: ");
  127 + if (ret != UT_HOLDING_REGISTERS_NB_POINTS) {
  128 + printf("FAILED (nb points %d)\n", ret);
  129 + goto close;
  130 + }
  131 +
113 132 for (i=0; i < UT_HOLDING_REGISTERS_NB_POINTS; i++) {
114 133 if (tab_rp_registers[i] != UT_HOLDING_REGISTERS_TAB[i]) {
115   - printf("Holding registers: FAILED (%0X != %0X)\n",
  134 + printf("FAILED (%0X != %0X)\n",
116 135 tab_rp_registers[i], UT_HOLDING_REGISTERS_TAB[i]);
117 136 goto close;
118 137 }
119 138 }
120   - printf("Holding registers: OK\n");
  139 + printf("OK\n");
121 140  
122 141 /** INPUT REGISTERS **/
123   - read_input_registers(&mb_param, SLAVE, UT_INPUT_REGISTERS_ADDRESS,
124   - UT_INPUT_REGISTERS_NB_POINTS, tab_rp_registers);
  142 + ret = read_input_registers(&mb_param, SLAVE, UT_INPUT_REGISTERS_ADDRESS,
  143 + UT_INPUT_REGISTERS_NB_POINTS, tab_rp_registers);
  144 + printf("* input registers: ");
  145 + if (ret != UT_INPUT_REGISTERS_NB_POINTS) {
  146 + printf("FAILED (nb points %d)\n", ret);
  147 + goto close;
  148 + }
  149 +
125 150 for (i=0; i < UT_INPUT_REGISTERS_NB_POINTS; i++) {
126 151 if (tab_rp_registers[i] != UT_INPUT_REGISTERS_TAB[i]) {
127   - printf("Input registers: FAILED (%0X != %0X)\n",
  152 + printf("FAILED (%0X != %0X)\n",
128 153 tab_rp_registers[i], UT_INPUT_REGISTERS_TAB[i]);
129 154 goto close;
130 155 }
131 156 }
132   - printf("Input registers: OK\n");
  157 + printf("OK\n");
133 158  
134 159  
135   - /** ILLEGAL DATA ADDRESSES */
136   - read_coil_status(&mb_param, SLAVE, UT_COIL_STATUS_ADDRESS + UT_COIL_STATUS_NB_POINTS + 1,
137   - UT_COIL_STATUS_NB_POINTS, tab_rp_status);
  160 + /** ILLEGAL DATA ADDRESS */
  161 + printf("\nTest illegal data address:");
  162 +
  163 + /* The mapping begins at 0 and end at adresse + nb_points so
  164 + * the adresses above are not valid. */
138 165  
  166 + ret = read_coil_status(&mb_param, SLAVE, UT_COIL_STATUS_ADDRESS,
  167 + UT_COIL_STATUS_NB_POINTS + 1, tab_rp_status);
  168 + printf("* coil status: ");
  169 + if (ret == ILLEGAL_DATA_ADDRESS)
  170 + printf("OK");
  171 + else
  172 + printf("FAILED");
  173 +
  174 + ret = read_input_status(&mb_param, SLAVE, UT_INPUT_STATUS_ADDRESS,
  175 + UT_INPUT_STATUS_NB_POINTS + 1, tab_rp_status);
  176 + printf("* input status: ");
  177 + if (ret == ILLEGAL_DATA_ADDRESS)
  178 + printf("OK");
  179 + else
  180 + printf("FAILED");
  181 +
  182 + ret = read_holding_registers(&mb_param, SLAVE, UT_HOLDING_REGISTERS_ADDRESS,
  183 + UT_HOLDING_REGISTERS_NB_POINTS + 1, tab_rp_registers);
  184 + printf("* holding registers: ");
  185 + if (ret == ILLEGAL_DATA_ADDRESS)
  186 + printf("OK");
  187 + else
  188 + printf("FAILED");
  189 +
  190 + ret = read_input_registers(&mb_param, SLAVE, UT_INPUT_REGISTERS_ADDRESS,
  191 + UT_INPUT_REGISTERS_NB_POINTS + 1, tab_rp_registers);
  192 + printf("* input registers: ");
  193 + if (ret == ILLEGAL_DATA_ADDRESS)
  194 + printf("OK");
  195 + else
  196 + printf("FAILED");
  197 +
139 198 close:
140 199 /* Free the memory */
141 200 free(tab_rp_status);
... ...