Skip to content

Commit 31766df

Browse files
committed
Full code coverage
1 parent afdf4ea commit 31766df

File tree

1 file changed

+175
-0
lines changed

1 file changed

+175
-0
lines changed

test/unit-test/FreeRTOS_IPv4/FreeRTOS_IPv4_utest.c

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,141 @@ void test_xIsIPv4Multicast_IsMultiCast( void )
123123
TEST_ASSERT_EQUAL( pdTRUE, xReturn );
124124
}
125125

126+
/**
127+
* @brief test_xIsIPv4Broadcast_BroadcastAddress
128+
* To validate if xIsIPv4Broadcast() when given broadcast address.
129+
*/
130+
void test_xIsIPv4Broadcast_BroadcastAddress( void )
131+
{
132+
BaseType_t xIsBroadcast;
133+
NetworkEndPoint_t xEndPoints[ 2 ]; /* IPv6->IPv4 */
134+
NetworkEndPoint_t *pxEndPoint = NULL;
135+
136+
memset( &xEndPoints[ 0 ], 0, sizeof( NetworkEndPoint_t ) );
137+
xEndPoints[ 0 ].bits.bIPv6 = pdTRUE;
138+
memset( &xEndPoints[ 1 ], 0, sizeof( NetworkEndPoint_t ) );
139+
xEndPoints[ 1 ].bits.bIPv6 = pdFALSE;
140+
xEndPoints[ 1 ].ipv4_settings.ulIPAddress = FREERTOS_INADDR_BROADCAST;
141+
142+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( &xEndPoints[ 0 ] );
143+
FreeRTOS_NextEndPoint_ExpectAndReturn( NULL, &xEndPoints[ 0 ], &xEndPoints[ 1 ] );
144+
145+
xIsBroadcast = xIsIPv4Broadcast(FREERTOS_INADDR_BROADCAST, &pxEndPoint);
146+
147+
TEST_ASSERT_EQUAL( pdTRUE, xIsBroadcast );
148+
TEST_ASSERT_EQUAL( &xEndPoints[ 1 ], pxEndPoint );
149+
}
150+
151+
/**
152+
* @brief test_xIsIPv4Broadcast_BroadcastAddressNoPtr
153+
* To validate if xIsIPv4Broadcast() when given broadcast address but
154+
* no input EP pointer.
155+
*/
156+
void test_xIsIPv4Broadcast_BroadcastAddressNoPtr( void )
157+
{
158+
BaseType_t xIsBroadcast;
159+
NetworkEndPoint_t xEndPoints[ 2 ]; /* IPv6->IPv4 */
160+
161+
memset( &xEndPoints[ 0 ], 0, sizeof( NetworkEndPoint_t ) );
162+
xEndPoints[ 0 ].bits.bIPv6 = pdTRUE;
163+
memset( &xEndPoints[ 1 ], 0, sizeof( NetworkEndPoint_t ) );
164+
xEndPoints[ 1 ].bits.bIPv6 = pdFALSE;
165+
xEndPoints[ 1 ].ipv4_settings.ulIPAddress = FREERTOS_INADDR_BROADCAST;
166+
167+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( &xEndPoints[ 0 ] );
168+
FreeRTOS_NextEndPoint_ExpectAndReturn( NULL, &xEndPoints[ 0 ], &xEndPoints[ 1 ] );
169+
170+
xIsBroadcast = xIsIPv4Broadcast(FREERTOS_INADDR_BROADCAST, NULL);
171+
172+
TEST_ASSERT_EQUAL( pdTRUE, xIsBroadcast );
173+
}
174+
175+
/**
176+
* @brief test_xIsIPv4Broadcast_BroadcastAddressNotFREERTOS_INADDR_BROADCAST
177+
* To validate if
178+
* test_xIsIPv4Broadcast_BroadcastAddressNotFREERTOS_INADDR_BROADCAST()
179+
* when given broadcast address but not FREERTOS_INADDR_BROADCAST.
180+
*/
181+
void test_xIsIPv4Broadcast_BroadcastAddressNotFREERTOS_INADDR_BROADCAST( void )
182+
{
183+
BaseType_t xIsBroadcast;
184+
NetworkEndPoint_t xEndPoints[ 2 ]; /* IPv6->IPv4 */
185+
NetworkEndPoint_t *pxEndPoint = NULL;
186+
187+
memset( &xEndPoints[ 0 ], 0, sizeof( NetworkEndPoint_t ) );
188+
xEndPoints[ 0 ].bits.bIPv6 = pdTRUE;
189+
memset( &xEndPoints[ 1 ], 0, sizeof( NetworkEndPoint_t ) );
190+
xEndPoints[ 1 ].bits.bIPv6 = pdFALSE;
191+
xEndPoints[ 1 ].ipv4_settings.ulBroadcastAddress = 0xFFFF1234;
192+
193+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( &xEndPoints[ 0 ] );
194+
FreeRTOS_NextEndPoint_ExpectAndReturn( NULL, &xEndPoints[ 0 ], &xEndPoints[ 1 ] );
195+
196+
xIsBroadcast = xIsIPv4Broadcast(0xFFFF1234, &pxEndPoint);
197+
198+
TEST_ASSERT_EQUAL( pdTRUE, xIsBroadcast );
199+
TEST_ASSERT_EQUAL( &xEndPoints[ 1 ], pxEndPoint );
200+
}
201+
202+
/**
203+
* @brief test_xIsIPv4Broadcast_NotBroadcastAddress
204+
* To validate if xIsIPv4Broadcast() when given not a broadcast address.
205+
*/
206+
void test_xIsIPv4Broadcast_NotBroadcastAddress( void )
207+
{
208+
BaseType_t xIsBroadcast;
209+
NetworkEndPoint_t xEndPoints[ 2 ]; /* IPv6->IPv4 */
210+
NetworkEndPoint_t *pxEndPoint = NULL;
211+
212+
memset( &xEndPoints[ 0 ], 0, sizeof( NetworkEndPoint_t ) );
213+
xEndPoints[ 0 ].bits.bIPv6 = pdTRUE;
214+
memset( &xEndPoints[ 1 ], 0, sizeof( NetworkEndPoint_t ) );
215+
xEndPoints[ 1 ].bits.bIPv6 = pdFALSE;
216+
xEndPoints[ 1 ].ipv4_settings.ulIPAddress = FREERTOS_INADDR_BROADCAST;
217+
218+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( &xEndPoints[ 0 ] );
219+
FreeRTOS_NextEndPoint_ExpectAndReturn( NULL, &xEndPoints[ 0 ], &xEndPoints[ 1 ] );
220+
FreeRTOS_NextEndPoint_ExpectAndReturn( NULL, &xEndPoints[ 1 ], NULL );
221+
222+
xIsBroadcast = xIsIPv4Broadcast(0xABCD1235, &pxEndPoint);
223+
224+
TEST_ASSERT_EQUAL( pdFALSE, xIsBroadcast );
225+
TEST_ASSERT_EQUAL( NULL, pxEndPoint );
226+
}
227+
228+
/**
229+
* @brief test_xIsIPv4Broadcast_NoEndPoints
230+
* To validate if xIsIPv4Broadcast() when no endpoints are there.
231+
*/
232+
void test_xIsIPv4Broadcast_NoEndPoints( void )
233+
{
234+
BaseType_t xIsBroadcast;
235+
NetworkEndPoint_t *pxEndPoint = NULL;
236+
237+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( NULL );
238+
239+
xIsBroadcast = xIsIPv4Broadcast(0xABCD1235, &pxEndPoint);
240+
241+
TEST_ASSERT_EQUAL( pdFALSE, xIsBroadcast );
242+
TEST_ASSERT_EQUAL( NULL, pxEndPoint );
243+
}
244+
245+
/**
246+
* @brief test_xIsIPv4Broadcast_NoEndPointsNoPtr
247+
* To validate if xIsIPv4Broadcast() when no endpoints are there
248+
* and no pointer given.
249+
*/
250+
void test_xIsIPv4Broadcast_NoEndPointsNoPtr( void )
251+
{
252+
BaseType_t xIsBroadcast;
253+
254+
FreeRTOS_FirstEndPoint_ExpectAnyArgsAndReturn( NULL );
255+
256+
xIsBroadcast = xIsIPv4Broadcast(0xABCD1235, NULL);
257+
258+
TEST_ASSERT_EQUAL( pdFALSE, xIsBroadcast );
259+
}
260+
126261
/**
127262
* @brief test_prvAllowIPPacketIPv4_LessHeaderLength
128263
* To validate if prvAllowIPPacketIPv4() returns eReleaseBuffer when ucVersionHeaderLength
@@ -448,6 +583,46 @@ void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPUnicast( void )
448583
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
449584
}
450585

586+
/**
587+
* @brief test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPBroadcastAndIncorrectChkSum
588+
* To validate if prvAllowIPPacketIPv4() when
589+
* destination MAC address is broadcast address and the IP address is broadcast address.
590+
* And the endpoint is up.
591+
*/
592+
void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPBroadcastAndIncorrectChkSum( void )
593+
{
594+
eFrameProcessingResult_t eResult;
595+
IPPacket_t * pxIPPacket;
596+
NetworkBufferDescriptor_t * pxNetworkBuffer, xNetworkBuffer;
597+
UBaseType_t uxHeaderLength = 0;
598+
uint8_t ucEthBuffer[ ipconfigTCP_MSS ];
599+
IPHeader_t * pxIPHeader;
600+
NetworkEndPoint_t xEndpoint;
601+
602+
memset( ucEthBuffer, 0, ipconfigTCP_MSS );
603+
604+
pxNetworkBuffer = &xNetworkBuffer;
605+
pxNetworkBuffer->pucEthernetBuffer = ucEthBuffer;
606+
pxNetworkBuffer->pxEndPoint = &xEndpoint;
607+
pxIPPacket = ( IPPacket_t * ) pxNetworkBuffer->pucEthernetBuffer;
608+
pxIPHeader = &( pxIPPacket->xIPHeader );
609+
610+
pxIPHeader->ucVersionHeaderLength = 0x45;
611+
612+
pxIPHeader->ulDestinationIPAddress = 0xABCDFFFF;
613+
xEndpoint.ipv4_settings.ulBroadcastAddress = 0xABCDFFFF;
614+
615+
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
616+
617+
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
618+
619+
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC - 1 );
620+
621+
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
622+
623+
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
624+
}
625+
451626
/**
452627
* @brief test_prvAllowIPPacketIPv4_SrcMACBrdCast
453628
* To validate if prvAllowIPPacketIPv4() returns eReleaseBuffer when

0 commit comments

Comments
 (0)