From 630690dd8185c6940eba9cb50089aab1ef60c519 Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Wed, 3 Apr 2024 16:14:05 +0530 Subject: [PATCH] Fix unit tests --- test/unit-test/CMakeLists.txt | 2 +- .../unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c | 17 +- test/unit-test/FreeRTOS_IP/ut.cmake | 1 + .../FreeRTOS_IP_DiffConfig2/ut.cmake | 1 + .../FreeRTOS_IP_Utils_utest.c | 38 ++- .../FreeRTOS_IPv6_Utils_utest.c | 228 ++++++++++++++++++ test/unit-test/FreeRTOS_IPv6_Utils/ut.cmake | 1 + 7 files changed, 255 insertions(+), 33 deletions(-) diff --git a/test/unit-test/CMakeLists.txt b/test/unit-test/CMakeLists.txt index b93680075..253cf45b2 100644 --- a/test/unit-test/CMakeLists.txt +++ b/test/unit-test/CMakeLists.txt @@ -311,7 +311,7 @@ include( ${UNIT_TEST_DIR}/FreeRTOS_Routing_ConfigCompatibleWithSingle/ut.cmake ) add_custom_target( coverage COMMAND ${CMAKE_COMMAND} -P ${MODULE_ROOT_DIR}/test/unit-test/cmock/coverage.cmake DEPENDS cmock unity -FreeRTOS_ARP_utest + FreeRTOS_ARP_utest FreeRTOS_ARP_DataLenLessThanMinPacket_utest FreeRTOS_BitConfig_utest FreeRTOS_DHCP_utest diff --git a/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c b/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c index 0f654899c..d7c5af405 100644 --- a/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c +++ b/test/unit-test/FreeRTOS_IP/FreeRTOS_IP_utest.c @@ -48,6 +48,7 @@ #include "mock_FreeRTOS_IP_Private.h" #include "mock_FreeRTOS_IPv4_Private.h" #include "mock_FreeRTOS_IP_Utils.h" +#include "mock_FreeRTOS_IPv6_Utils.h" #include "mock_FreeRTOS_IP_Timers.h" #include "mock_FreeRTOS_TCP_IP.h" #include "mock_FreeRTOS_ICMP.h" @@ -170,6 +171,7 @@ void test_vIPNetworkUpCalls( void ) NetworkEndPoint_t xEndPoint = { 0 }; xEndPoint.bits.bEndPointUp = pdFALSE; + xEndPoint.bits.bIPv6 = pdFALSE; vApplicationIPNetworkEventHook_Multi_Expect( eNetworkUp, &xEndPoint ); vDNSInitialise_Expect(); @@ -4002,11 +4004,6 @@ static void prvIPNetworkUpCalls_Generic( const uint8_t * pucAddress, xEndPoint.bits.bWantDHCP = pdFALSE_UNSIGNED; memcpy( xEndPoint.ipv6_settings.xIPAddress.ucBytes, pucAddress, ipSIZE_OF_IPv6_ADDRESS ); - if( ( uxSetMembers & ipHAS_METHOD ) != 0U ) - { - xInterface.pfAddAllowedMAC = pfAddAllowedMAC; - } - if( ( uxSetMembers & ipHAS_INTERFACE ) != 0U ) { xEndPoint.pxNetworkInterface = &xInterface; @@ -4029,8 +4026,8 @@ static void prvIPNetworkUpCalls_Generic( const uint8_t * pucAddress, if( xEndPoint.bits.bIPv6 == pdTRUE_UNSIGNED ) { - /* The xIPv6_GetIPType() function is mocked. */ - xIPv6_GetIPType_ExpectAnyArgsAndReturn( eType ); + /* The vManageSolicitedNodeAddress() function is mocked. */ + vManageSolicitedNodeAddress_Expect( &xEndPoint, pdTRUE ); } vApplicationIPNetworkEventHook_Multi_Expect( eNetworkUp, &xEndPoint ); @@ -4040,8 +4037,6 @@ static void prvIPNetworkUpCalls_Generic( const uint8_t * pucAddress, vIPNetworkUpCalls( &xEndPoint ); TEST_ASSERT_EQUAL( pdTRUE, xEndPoint.bits.bEndPointUp ); - /* See if pfAddAllowedMAC() was called when it has to. */ - TEST_ASSERT_EQUAL( xMACAddExpected, xMACFunctionCalled ); } void test_prvIPNetworkUpCalls_LinkLocal() @@ -4060,9 +4055,9 @@ void test_prvIPNetworkUpCalls_LinkLocal() }; /* Test all combinations of what might go wrong. */ - prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_METHOD | ipHAS_INTERFACE ); prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); - prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_METHOD ); + prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); + prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 ); prvIPNetworkUpCalls_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_INTERFACE ); } diff --git a/test/unit-test/FreeRTOS_IP/ut.cmake b/test/unit-test/FreeRTOS_IP/ut.cmake index b2a33dac1..16dbceec5 100644 --- a/test/unit-test/FreeRTOS_IP/ut.cmake +++ b/test/unit-test/FreeRTOS_IP/ut.cmake @@ -23,6 +23,7 @@ list(APPEND mock_list "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv4_Private.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Timers.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Utils.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6_Utils.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ARP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ICMP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_DNS.h" diff --git a/test/unit-test/FreeRTOS_IP_DiffConfig2/ut.cmake b/test/unit-test/FreeRTOS_IP_DiffConfig2/ut.cmake index 2ef4a847f..4e31ae3ec 100644 --- a/test/unit-test/FreeRTOS_IP_DiffConfig2/ut.cmake +++ b/test/unit-test/FreeRTOS_IP_DiffConfig2/ut.cmake @@ -20,6 +20,7 @@ list(APPEND mock_list "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv4_Private.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Timers.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Utils.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6_Utils.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ARP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ICMP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_DNS.h" diff --git a/test/unit-test/FreeRTOS_IP_Utils/FreeRTOS_IP_Utils_utest.c b/test/unit-test/FreeRTOS_IP_Utils/FreeRTOS_IP_Utils_utest.c index 4865a3937..8ac54c56c 100644 --- a/test/unit-test/FreeRTOS_IP_Utils/FreeRTOS_IP_Utils_utest.c +++ b/test/unit-test/FreeRTOS_IP_Utils/FreeRTOS_IP_Utils_utest.c @@ -621,8 +621,8 @@ void test_prvProcessNetworkDownEvent_PassDHCPv6( void ) if( xEndPoint.bits.bIPv6 == pdTRUE_UNSIGNED ) { - /* The xIPv6_GetIPType() function is mocked. */ - xIPv6_GetIPType_ExpectAnyArgsAndReturn( eIPv6_Multicast ); + /* The vManageSolicitedNodeAddress() function is mocked. */ + vManageSolicitedNodeAddress_Expect( &xEndPoint, pdFALSE ); } FreeRTOS_NextEndPoint_IgnoreAndReturn( NULL ); @@ -658,8 +658,8 @@ void test_prvProcessNetworkDownEvent_PassRA( void ) if( xEndPoint.bits.bIPv6 == pdTRUE_UNSIGNED ) { - /* The xIPv6_GetIPType() function is mocked. */ - xIPv6_GetIPType_ExpectAnyArgsAndReturn( eIPv6_Multicast ); + /* The vManageSolicitedNodeAddress() function is mocked. */ + vManageSolicitedNodeAddress_Expect( &xEndPoint, pdFALSE ); } FreeRTOS_NextEndPoint_IgnoreAndReturn( NULL ); @@ -697,8 +697,8 @@ void test_prvProcessNetworkDownEvent_PassStaticIP( void ) if( xEndPoint.bits.bIPv6 == pdTRUE_UNSIGNED ) { - /* The xIPv6_GetIPType() function is mocked. */ - xIPv6_GetIPType_ExpectAnyArgsAndReturn( eIPv6_Multicast ); + /* The vManageSolicitedNodeAddress() function is mocked. */ + vManageSolicitedNodeAddress_Expect( &xEndPoint, pdFALSE ); } FreeRTOS_NextEndPoint_IgnoreAndReturn( NULL ); @@ -3107,11 +3107,6 @@ static void prvProcessNetworkDownEvent_Generic( const uint8_t * pucAddress, xEndPoint.bits.bWantDHCP = pdFALSE_UNSIGNED; memcpy( xEndPoint.ipv6_settings.xIPAddress.ucBytes, pucAddress, ipSIZE_OF_IPv6_ADDRESS ); - if( ( uxSetMembers & ipHAS_METHOD ) != 0U ) - { - xInterface.pfRemoveAllowedMAC = pfRemoveAllowedMAC; - } - if( ( uxSetMembers & ipHAS_INTERFACE ) != 0U ) { xEndPoint.pxNetworkInterface = &xInterface; @@ -3138,8 +3133,8 @@ static void prvProcessNetworkDownEvent_Generic( const uint8_t * pucAddress, if( xEndPoint.bits.bIPv6 == pdTRUE_UNSIGNED ) { - /* The xIPv6_GetIPType() function is mocked. */ - xIPv6_GetIPType_ExpectAnyArgsAndReturn( eType ); + /* The vManageSolicitedNodeAddress() function is mocked. */ + vManageSolicitedNodeAddress_Expect( &xEndPoint, pdFALSE ); } FreeRTOS_NextEndPoint_IgnoreAndReturn( NULL ); @@ -3171,9 +3166,9 @@ void test_prvProcessNetworkDownEvent_LinkLocal() }; /* Test all combinations of what might go wrong. */ - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_METHOD | ipHAS_INTERFACE ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_METHOD ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_IPV6 ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_LinkLocal, ipHAS_INTERFACE ); } @@ -3192,9 +3187,9 @@ void test_prvProcessNetworkDownEvent_Global() 0x70U, 0x09U }; - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_IPV6 | ipHAS_METHOD | ipHAS_INTERFACE ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_IPV6 | ipHAS_INTERFACE ); - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_IPV6 | ipHAS_METHOD ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_IPV6 | ipHAS_INTERFACE ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_IPV6 ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Global, ipHAS_INTERFACE ); } @@ -3213,9 +3208,9 @@ void test_prvProcessNetworkDownEvent_SiteLocal() 0x70U, 0x09U }; - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_IPV6 | ipHAS_METHOD | ipHAS_INTERFACE ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_IPV6 | ipHAS_METHOD ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_IPV6 | ipHAS_INTERFACE ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_IPV6 ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_SiteLocal, ipHAS_INTERFACE ); } @@ -3235,10 +3230,11 @@ void test_prvProcessNetworkDownEvent_Multicast() 0x00U, 0xFBU }; - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_IPV6 | ipHAS_METHOD | ipHAS_INTERFACE ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_IPV6 | ipHAS_INTERFACE ); - prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_IPV6 | ipHAS_METHOD ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_IPV6 | ipHAS_INTERFACE ); + prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_IPV6 ); prvProcessNetworkDownEvent_Generic( ucAddress, eIPv6_Multicast, ipHAS_INTERFACE ); +} /** * @brief test_eGetDHCPState diff --git a/test/unit-test/FreeRTOS_IPv6_Utils/FreeRTOS_IPv6_Utils_utest.c b/test/unit-test/FreeRTOS_IPv6_Utils/FreeRTOS_IPv6_Utils_utest.c index 8eaf9f7ff..cc3ad9e85 100644 --- a/test/unit-test/FreeRTOS_IPv6_Utils/FreeRTOS_IPv6_Utils_utest.c +++ b/test/unit-test/FreeRTOS_IPv6_Utils/FreeRTOS_IPv6_Utils_utest.c @@ -44,6 +44,7 @@ #include "mock_FreeRTOS_IP.h" #include "mock_FreeRTOS_IPv6.h" +#include "mock_FreeRTOS_Routing.h" #include "FreeRTOS_IPv6_Utils.h" @@ -642,3 +643,230 @@ void test_usGetExtensionHeaderLength_InvalidHeader( void ) TEST_ASSERT_EQUAL( pxNetworkBuffer->xDataLength, xReturn ); } + +/* This variable will be set when pfAddAllowedMAC() is called by vIPNetworkUpCalls(). */ +static BaseType_t xMACAddFunctionCalled; +static BaseType_t xMACRemoveFunctionCalled; + +static void pfAddAllowedMAC( struct xNetworkInterface * pxInterface, + const uint8_t * pucMacAddress ) +{ + xMACAddFunctionCalled = pdTRUE; +} + +static void pfRemoveAllowedMAC( struct xNetworkInterface * pxInterface, + const uint8_t * pucMacAddress ) +{ + xMACRemoveFunctionCalled = pdTRUE; +} + +/** + * @brief Check for assert if endpoint is NULL + */ +void test_vManageSolicitedNodeAddress_NoEndPoint_CatchAssert( void ) +{ + catch_assert( vManageSolicitedNodeAddress(NULL, pdTRUE) ); +} + + +/** + * @brief Check for assert if interface is NULL + */ +void test_vManageSolicitedNodeAddress_NoInterface_CatchAssert( void ) +{ + NetworkEndPoint_t xEndPoint = { 0 }; + catch_assert( vManageSolicitedNodeAddress(&xEndPoint, pdTRUE) ); +} + + +/** + * @brief Validate the case were the network is going up + */ +void test_vManageSolicitedNodeAddress_NetworkGoingUp( void ) +{ + + NetworkInterface_t xInterface = { 0 }; + NetworkEndPoint_t xEndPoint = { 0 }; + BaseType_t xMACAddExpected = pdFALSE; + /* Use the local-link address fe80::7009 */ + static const uint8_t ucAddress[ 16 ] = + { + 0xFEU, 0x80U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x70U, 0x09U + }; + + + /* Happy path eIPv6_LinkLocal */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xEndPoint.bits.bEndPointUp = pdFALSE; + xEndPoint.bits.bCallDownHook = pdFALSE_UNSIGNED; + xEndPoint.bits.bWantDHCP = pdFALSE_UNSIGNED; + xEndPoint.bits.bIPv6 = pdTRUE; + xEndPoint.pxNetworkInterface = &xInterface; + memcpy( xEndPoint.ipv6_settings.xIPAddress.ucBytes, ucAddress, ipSIZE_OF_IPv6_ADDRESS ); + + xMACAddFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_LinkLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdTRUE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACAddFunctionCalled); + + /* No MAC address add handler */ + xInterface.pfAddAllowedMAC = NULL; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACAddFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_LinkLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdTRUE); + + TEST_ASSERT_EQUAL(pdFALSE, xMACAddFunctionCalled); + + /* Happy path eIPv6_SiteLocal */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACAddFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_SiteLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdTRUE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACAddFunctionCalled); + + /* Happy path eIPv6_Global */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACAddFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_Global); + + vManageSolicitedNodeAddress(&xEndPoint, pdTRUE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACAddFunctionCalled); + + /* Unhappy path eIPv6_Loopback */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACAddFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_Loopback); + + vManageSolicitedNodeAddress(&xEndPoint, pdTRUE); + + TEST_ASSERT_EQUAL(pdFALSE, xMACAddFunctionCalled); +} + +/** + * @brief Validate the case were the network is going down + */ +void test_vManageSolicitedNodeAddress_NetworkGoingDown( void ) +{ + + NetworkInterface_t xInterface = { 0 }; + NetworkEndPoint_t xEndPoint = { 0 }; + BaseType_t xMACAddExpected = pdFALSE; + /* Use the local-link address fe80::7009 */ + static const uint8_t ucAddress[ 16 ] = + { + 0xFEU, 0x80U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x00U, 0x00U, + 0x70U, 0x09U + }; + + + /* Happy path eIPv6_LinkLocal */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xEndPoint.bits.bEndPointUp = pdFALSE; + xEndPoint.bits.bCallDownHook = pdFALSE_UNSIGNED; + xEndPoint.bits.bWantDHCP = pdFALSE_UNSIGNED; + xEndPoint.bits.bIPv6 = pdTRUE; + xEndPoint.pxNetworkInterface = &xInterface; + memcpy( xEndPoint.ipv6_settings.xIPAddress.ucBytes, ucAddress, ipSIZE_OF_IPv6_ADDRESS ); + + xMACRemoveFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_LinkLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdFALSE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACRemoveFunctionCalled); + + /* No MAC address add handler */ + xInterface.pfAddAllowedMAC = NULL; + xInterface.pfRemoveAllowedMAC = NULL; + xInterface.pxEndPoint = &xEndPoint; + + xMACRemoveFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_LinkLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdFALSE); + + TEST_ASSERT_EQUAL(pdFALSE, xMACRemoveFunctionCalled); + + /* Happy path eIPv6_SiteLocal */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACRemoveFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_SiteLocal); + + vManageSolicitedNodeAddress(&xEndPoint, pdFALSE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACRemoveFunctionCalled); + + /* Happy path eIPv6_Global */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACRemoveFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_Global); + + vManageSolicitedNodeAddress(&xEndPoint, pdFALSE); + + TEST_ASSERT_EQUAL(pdTRUE, xMACRemoveFunctionCalled); + + /* Unhappy path eIPv6_Loopback */ + xInterface.pfAddAllowedMAC = &pfAddAllowedMAC; + xInterface.pfRemoveAllowedMAC = &pfRemoveAllowedMAC; + xInterface.pxEndPoint = &xEndPoint; + + xMACRemoveFunctionCalled = pdFALSE; + + xIPv6_GetIPType_ExpectAndReturn( &xEndPoint.ipv6_settings.xIPAddress, eIPv6_Loopback); + + vManageSolicitedNodeAddress(&xEndPoint, pdFALSE); + + TEST_ASSERT_EQUAL(pdFALSE, xMACRemoveFunctionCalled); +} \ No newline at end of file diff --git a/test/unit-test/FreeRTOS_IPv6_Utils/ut.cmake b/test/unit-test/FreeRTOS_IPv6_Utils/ut.cmake index 6e9f105f5..16cf08c42 100644 --- a/test/unit-test/FreeRTOS_IPv6_Utils/ut.cmake +++ b/test/unit-test/FreeRTOS_IPv6_Utils/ut.cmake @@ -18,6 +18,7 @@ list(APPEND mock_list "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ICMP.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Sockets.h" + "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Routing.h" "${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Utils.h" )