|
15 | 15 | * copies or substantial portions of the Software.
|
16 | 16 | *
|
17 | 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18 |
| - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
19 |
| - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
20 |
| - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
21 |
| - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 18 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 19 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
| 20 | + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| 21 | + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
22 | 22 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23 | 23 | */
|
24 | 24 |
|
@@ -1168,3 +1168,143 @@ void test_MQTT_State_strerror( void )
|
1168 | 1168 | }
|
1169 | 1169 |
|
1170 | 1170 | /* ========================================================================== */
|
| 1171 | + |
| 1172 | +void test_MQTT_SetOutgoingPublishRecord( void ) |
| 1173 | +{ |
| 1174 | + MQTTContext_t mqttContext = { 0 }; |
| 1175 | + MQTTStatus_t status; |
| 1176 | + const uint16_t PACKET_ID = 1; |
| 1177 | + const MQTTQoS_t qos = MQTTQoS2; |
| 1178 | + const MQTTPublishState_t publishState = MQTTPubRelSend; |
| 1179 | + TransportInterface_t transport; |
| 1180 | + MQTTFixedBuffer_t networkBuffer = { 0 }; |
| 1181 | + |
| 1182 | + transport.recv = transportRecvSuccess; |
| 1183 | + transport.send = transportSendSuccess; |
| 1184 | + |
| 1185 | + MQTTPubAckInfo_t incomingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1186 | + MQTTPubAckInfo_t outgoingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1187 | + |
| 1188 | + status = MQTT_Init( &mqttContext, &transport, |
| 1189 | + getTime, eventCallback, &networkBuffer ); |
| 1190 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1191 | + |
| 1192 | + status = MQTT_InitStatefulQoS( &mqttContext, |
| 1193 | + outgoingRecords, MQTT_STATE_ARRAY_MAX_COUNT, |
| 1194 | + incomingRecords, MQTT_STATE_ARRAY_MAX_COUNT ); |
| 1195 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1196 | + |
| 1197 | + /* Test for bad parameters */ |
| 1198 | + status = MQTT_SetOutgoingPublishRecord( NULL, PACKET_ID, qos, publishState ); |
| 1199 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1200 | + status = MQTT_SetOutgoingPublishRecord( &mqttContext, MQTT_PACKET_ID_INVALID, qos, publishState ); |
| 1201 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1202 | + status = MQTT_SetOutgoingPublishRecord( &mqttContext, PACKET_ID, MQTTQoS0, publishState ); |
| 1203 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1204 | + |
| 1205 | + /* Success. */ |
| 1206 | + status = MQTT_SetOutgoingPublishRecord( &mqttContext, PACKET_ID, qos, publishState ); |
| 1207 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1208 | + /* Verify the record is added correctly. */ |
| 1209 | + TEST_ASSERT_EQUAL( PACKET_ID, mqttContext.outgoingPublishRecords[ 0 ].packetId ); |
| 1210 | + TEST_ASSERT_EQUAL( qos, mqttContext.outgoingPublishRecords[ 0 ].qos ); |
| 1211 | + TEST_ASSERT_EQUAL( publishState, mqttContext.outgoingPublishRecords[ 0 ].publishState ); |
| 1212 | +} |
| 1213 | + |
| 1214 | +/* ========================================================================== */ |
| 1215 | + |
| 1216 | +void test_MQTT_GetOutgoingPublishRecord( void ) |
| 1217 | +{ |
| 1218 | + MQTTContext_t mqttContext = { 0 }; |
| 1219 | + MQTTStatus_t status; |
| 1220 | + const uint16_t PACKET_ID = 1; |
| 1221 | + const MQTTQoS_t qos = MQTTQoS2; |
| 1222 | + const MQTTPublishState_t publishState = MQTTPubRelSend; |
| 1223 | + MQTTQoS_t retrievedQos; |
| 1224 | + MQTTPublishState_t retrievedPublishState; |
| 1225 | + TransportInterface_t transport; |
| 1226 | + MQTTFixedBuffer_t networkBuffer = { 0 }; |
| 1227 | + |
| 1228 | + transport.recv = transportRecvSuccess; |
| 1229 | + transport.send = transportSendSuccess; |
| 1230 | + |
| 1231 | + MQTTPubAckInfo_t incomingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1232 | + MQTTPubAckInfo_t outgoingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1233 | + |
| 1234 | + status = MQTT_Init( &mqttContext, &transport, |
| 1235 | + getTime, eventCallback, &networkBuffer ); |
| 1236 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1237 | + |
| 1238 | + status = MQTT_InitStatefulQoS( &mqttContext, |
| 1239 | + outgoingRecords, MQTT_STATE_ARRAY_MAX_COUNT, |
| 1240 | + incomingRecords, MQTT_STATE_ARRAY_MAX_COUNT ); |
| 1241 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1242 | + |
| 1243 | + /* Test for bad parameters */ |
| 1244 | + status = MQTT_GetOutgoingPublishRecord( NULL, PACKET_ID, &retrievedQos, &retrievedPublishState ); |
| 1245 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1246 | + status = MQTT_GetOutgoingPublishRecord( &mqttContext, MQTT_PACKET_ID_INVALID, &retrievedQos, &retrievedPublishState ); |
| 1247 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1248 | + status = MQTT_GetOutgoingPublishRecord( &mqttContext, PACKET_ID, NULL, &retrievedPublishState ); |
| 1249 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1250 | + status = MQTT_GetOutgoingPublishRecord( &mqttContext, PACKET_ID, &retrievedQos, NULL ); |
| 1251 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1252 | + |
| 1253 | + /* No record found. */ |
| 1254 | + status = MQTT_GetOutgoingPublishRecord( &mqttContext, PACKET_ID, &retrievedQos, &retrievedPublishState ); |
| 1255 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1256 | + |
| 1257 | + /* Success. */ |
| 1258 | + addToRecord( mqttContext.outgoingPublishRecords, 0, PACKET_ID, qos, publishState ); |
| 1259 | + status = MQTT_GetOutgoingPublishRecord( &mqttContext, PACKET_ID, &retrievedQos, &retrievedPublishState ); |
| 1260 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1261 | + /* Verify the record is retrieved correctly. */ |
| 1262 | + TEST_ASSERT_EQUAL( qos, retrievedQos ); |
| 1263 | + TEST_ASSERT_EQUAL( publishState, retrievedPublishState ); |
| 1264 | +} |
| 1265 | + |
| 1266 | +/* ========================================================================== */ |
| 1267 | + |
| 1268 | +void test_MQTT_GetFailedPacketId( void ) |
| 1269 | +{ |
| 1270 | + MQTTContext_t mqttContext = { 0 }; |
| 1271 | + MQTTStatus_t status; |
| 1272 | + const uint16_t PACKET_ID = 1; |
| 1273 | + const MQTTQoS_t qos = MQTTQoS2; |
| 1274 | + const MQTTPublishState_t publishState = MQTTPubRelSend; |
| 1275 | + uint16_t retrievedPacketId; |
| 1276 | + TransportInterface_t transport; |
| 1277 | + MQTTFixedBuffer_t networkBuffer = { 0 }; |
| 1278 | + |
| 1279 | + transport.recv = transportRecvSuccess; |
| 1280 | + transport.send = transportSendSuccess; |
| 1281 | + |
| 1282 | + MQTTPubAckInfo_t incomingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1283 | + MQTTPubAckInfo_t outgoingRecords[ MQTT_STATE_ARRAY_MAX_COUNT ] = { 0 }; |
| 1284 | + |
| 1285 | + status = MQTT_Init( &mqttContext, &transport, |
| 1286 | + getTime, eventCallback, &networkBuffer ); |
| 1287 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1288 | + |
| 1289 | + status = MQTT_InitStatefulQoS( &mqttContext, |
| 1290 | + outgoingRecords, MQTT_STATE_ARRAY_MAX_COUNT, |
| 1291 | + incomingRecords, MQTT_STATE_ARRAY_MAX_COUNT ); |
| 1292 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1293 | + |
| 1294 | + /* Test for bad parameters */ |
| 1295 | + status = MQTT_GetFailedPacketId( NULL, &retrievedPacketId ); |
| 1296 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1297 | + status = MQTT_GetFailedPacketId( &mqttContext, NULL ); |
| 1298 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1299 | + |
| 1300 | + /* No record found. */ |
| 1301 | + status = MQTT_GetFailedPacketId( &mqttContext, &retrievedPacketId ); |
| 1302 | + TEST_ASSERT_EQUAL( MQTTBadParameter, status ); |
| 1303 | + |
| 1304 | + /* Success. */ |
| 1305 | + addToRecord( mqttContext.outgoingPublishRecords, 0, PACKET_ID, qos, publishState ); |
| 1306 | + status = MQTT_GetFailedPacketId( &mqttContext, &retrievedPacketId ); |
| 1307 | + TEST_ASSERT_EQUAL( MQTTSuccess, status ); |
| 1308 | + /* Verify the packet ID is retrieved correctly. */ |
| 1309 | + TEST_ASSERT_EQUAL( PACKET_ID, retrievedPacketId ); |
| 1310 | +} |
0 commit comments