Skip to content

Commit

Permalink
Add unit tests for coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Dakshit Babbar committed Jan 29, 2025
1 parent b58d7f1 commit 7b959c6
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions test/unit-test/core_mqtt_utest.c
Original file line number Diff line number Diff line change
Expand Up @@ -3161,6 +3161,56 @@ void test_MQTT_Publish_Storing_Publish_Success( void )
TEST_ASSERT_EQUAL_INT( MQTTSuccess, status );
}

/**
* @brief Test that MQTT_Publish works as intended.
*/
void test_MQTT_Publish_Storing_Publish_Success_For_Duplicate_Publish( void )
{
MQTTContext_t mqttContext = { 0 };
MQTTPublishInfo_t publishInfo = { 0 };
TransportInterface_t transport = { 0 };
MQTTFixedBuffer_t networkBuffer = { 0 };
MQTTStatus_t status;
MQTTPubAckInfo_t incomingRecords = { 0 };
MQTTPubAckInfo_t outgoingRecords = { 0 };
MQTTPublishState_t expectedState = { 0 };

setupTransportInterface( &transport );
setupNetworkBuffer( &networkBuffer );
transport.send = transportSendFailure;

memset( &mqttContext, 0x0, sizeof( mqttContext ) );
memset( &publishInfo, 0x0, sizeof( publishInfo ) );
MQTT_Init( &mqttContext, &transport, getTime, eventCallback, &networkBuffer );

MQTT_InitStatefulQoS( &mqttContext,
&outgoingRecords, 4,
&incomingRecords, 4 );

MQTT_InitRetransmits( &mqttContext, publishStoreCallbackSuccess,
publishRetrieveCallbackSuccess,
publishClearCallback );

mqttContext.connectStatus = MQTTConnected;

publishInfo.qos = MQTTQoS1;
publishInfo.dup = true;

expectedState = MQTTPublishSend;

MQTT_GetPublishPacketSize_ExpectAnyArgsAndReturn( MQTTSuccess );
MQTT_SerializePublishHeaderWithoutTopic_ExpectAnyArgsAndReturn( MQTTSuccess );

MQTT_ReserveState_ExpectAnyArgsAndReturn( MQTTSuccess );

MQTT_UpdateStatePublish_ExpectAnyArgsAndReturn( MQTTSuccess );
MQTT_UpdateStatePublish_ReturnThruPtr_pNewState( &expectedState );

mqttContext.transportInterface.send = transportSendSuccess;
status = MQTT_Publish( &mqttContext, &publishInfo, 1 );
TEST_ASSERT_EQUAL_INT( MQTTSuccess, status );
}

/**
* @brief Test that MQTT_Publish works as intended.
*/
Expand Down Expand Up @@ -3206,6 +3256,51 @@ void test_MQTT_Publish_Storing_Publish_Failed( void )
TEST_ASSERT_EQUAL_INT( MQTTPublishStoreFailed, status );
}

/**
* @brief Test that MQTT_Publish works as intended.
*/
void test_MQTT_Publish_Storing_Publish_Failed_Due_To_Dup_Flag_Not_Set( void )
{
MQTTContext_t mqttContext = { 0 };
MQTTPublishInfo_t publishInfo = { 0 };
TransportInterface_t transport = { 0 };
MQTTFixedBuffer_t networkBuffer = { 0 };
MQTTStatus_t status;
MQTTPubAckInfo_t incomingRecords = { 0 };
MQTTPubAckInfo_t outgoingRecords = { 0 };

setupTransportInterface( &transport );
setupNetworkBuffer( &networkBuffer );
transport.send = transportSendFailure;

memset( &mqttContext, 0x0, sizeof( mqttContext ) );
memset( &publishInfo, 0x0, sizeof( publishInfo ) );
MQTT_Init( &mqttContext, &transport, getTime, eventCallback, &networkBuffer );

MQTT_InitStatefulQoS( &mqttContext,
&outgoingRecords, 4,
&incomingRecords, 4 );

MQTT_InitRetransmits( &mqttContext, publishStoreCallbackFailed,
publishRetrieveCallbackSuccess,
publishClearCallback );

mqttContext.connectStatus = MQTTConnected;

publishInfo.qos = MQTTQoS1;

MQTT_GetPublishPacketSize_ExpectAnyArgsAndReturn( MQTTSuccess );
MQTT_SerializePublishHeaderWithoutTopic_ExpectAnyArgsAndReturn( MQTTSuccess );

MQTT_ReserveState_ExpectAnyArgsAndReturn( MQTTSuccess );

MQTT_UpdateDuplicatePublishFlag_ExpectAnyArgsAndReturn( MQTTBadParameter );

mqttContext.transportInterface.send = transportSendSuccess;
status = MQTT_Publish( &mqttContext, &publishInfo, 1 );
TEST_ASSERT_EQUAL_INT( MQTTBadParameter, status );
}

/**
* @brief Test that MQTT_Publish works as intended.
*/
Expand Down

0 comments on commit 7b959c6

Please sign in to comment.