|
6 | 6 |
|
7 | 7 | #include <mock_nrf_rpc_transport.h> |
8 | 8 | #include <ot_rpc_ids.h> |
| 9 | +#include <ot_rpc_types.h> |
9 | 10 | #include <test_rpc_env.h> |
10 | 11 |
|
11 | 12 | #include <zephyr/ztest.h> |
@@ -132,4 +133,77 @@ ZTEST(ot_rpc_ip6, test_otIp6UnsubscribeMulticastAddress_failed) |
132 | 133 | zassert_equal(error, OT_ERROR_FAILED); |
133 | 134 | } |
134 | 135 |
|
| 136 | +/* Test serialization of otIp6GetUnicastAddresses() */ |
| 137 | +ZTEST(ot_rpc_ip6, test_otIp6GetUnicastAddresses) |
| 138 | +{ |
| 139 | + const otIp6Address exp_addr1 = {.mFields.m8 = {ADDR_1}}; |
| 140 | + const otIp6Address exp_addr2 = {.mFields.m8 = {ADDR_2}}; |
| 141 | + const uint16_t exp_flags1 = BIT(OT_RPC_NETIF_ADDRESS_PREFERRED_OFFSET) | |
| 142 | + BIT(OT_RPC_NETIF_ADDRESS_VALID_OFFSET) | |
| 143 | + BIT(OT_RPC_NETIF_ADDRESS_RLOC_OFFSET) | |
| 144 | + BIT(OT_RPC_NETIF_ADDRESS_MESH_LOCAL_OFFSET); |
| 145 | + const uint16_t exp_flags2 = BIT(OT_RPC_NETIF_ADDRESS_SCOPE_VALID_OFFSET) | |
| 146 | + (ADDR_SCOPE << OT_RPC_NETIF_ADDRESS_SCOPE_OFFSET); |
| 147 | + |
| 148 | + const otNetifAddress *addr; |
| 149 | + |
| 150 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_IP6_GET_UNICAST_ADDRESSES), |
| 151 | + RPC_RSP(0x9f, 0x50, ADDR_1, CBOR_UINT8(ADDR_PREFIX_LENGTH), |
| 152 | + OT_ADDRESS_ORIGIN_MANUAL, CBOR_UINT16(exp_flags1), 0xff, |
| 153 | + 0x9f, 0x50, ADDR_2, CBOR_UINT8(ADDR_PREFIX_LENGTH), |
| 154 | + OT_ADDRESS_ORIGIN_DHCPV6, CBOR_UINT16(exp_flags2), |
| 155 | + 0xff)); |
| 156 | + addr = otIp6GetUnicastAddresses(NULL); |
| 157 | + mock_nrf_rpc_tr_expect_done(); |
| 158 | + |
| 159 | + zassert_not_null(addr); |
| 160 | + zassert_mem_equal(&addr->mAddress, &exp_addr1, OT_IP6_ADDRESS_SIZE); |
| 161 | + zassert_equal(addr->mPrefixLength, ADDR_PREFIX_LENGTH); |
| 162 | + zassert_equal(addr->mAddressOrigin, OT_ADDRESS_ORIGIN_MANUAL); |
| 163 | + zassert_true(addr->mPreferred); |
| 164 | + zassert_true(addr->mValid); |
| 165 | + zassert_false(addr->mScopeOverrideValid); |
| 166 | + zassert_true(addr->mRloc); |
| 167 | + zassert_true(addr->mMeshLocal); |
| 168 | + addr = addr->mNext; |
| 169 | + |
| 170 | + zassert_not_null(addr); |
| 171 | + zassert_mem_equal(&addr->mAddress, &exp_addr2, OT_IP6_ADDRESS_SIZE); |
| 172 | + zassert_equal(addr->mPrefixLength, ADDR_PREFIX_LENGTH); |
| 173 | + zassert_equal(addr->mAddressOrigin, OT_ADDRESS_ORIGIN_DHCPV6); |
| 174 | + zassert_false(addr->mPreferred); |
| 175 | + zassert_false(addr->mValid); |
| 176 | + zassert_true(addr->mScopeOverrideValid); |
| 177 | + zassert_equal(addr->mScopeOverride, ADDR_SCOPE); |
| 178 | + zassert_false(addr->mRloc); |
| 179 | + zassert_false(addr->mMeshLocal); |
| 180 | + addr = addr->mNext; |
| 181 | + |
| 182 | + zassert_is_null(addr); |
| 183 | +} |
| 184 | + |
| 185 | +/* Test serialization of otIp6GetMulticastAddresses() */ |
| 186 | +ZTEST(ot_rpc_ip6, test_otIp6GetMulticastAddresses) |
| 187 | +{ |
| 188 | + const otIp6Address exp_addr1 = {.mFields.m8 = {MADDR_FF02_1}}; |
| 189 | + const otIp6Address exp_addr2 = {.mFields.m8 = {MADDR_FF02_2}}; |
| 190 | + |
| 191 | + const otNetifMulticastAddress *maddr; |
| 192 | + |
| 193 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_IP6_GET_MULTICAST_ADDRESSES), |
| 194 | + RPC_RSP(0x50, MADDR_FF02_1, 0x50, MADDR_FF02_2)); |
| 195 | + maddr = otIp6GetMulticastAddresses(NULL); |
| 196 | + mock_nrf_rpc_tr_expect_done(); |
| 197 | + |
| 198 | + zassert_not_null(maddr); |
| 199 | + zassert_mem_equal(&maddr->mAddress, &exp_addr1, OT_IP6_ADDRESS_SIZE); |
| 200 | + maddr = maddr->mNext; |
| 201 | + |
| 202 | + zassert_not_null(maddr); |
| 203 | + zassert_mem_equal(&maddr->mAddress, &exp_addr2, OT_IP6_ADDRESS_SIZE); |
| 204 | + maddr = maddr->mNext; |
| 205 | + |
| 206 | + zassert_is_null(maddr); |
| 207 | +} |
| 208 | + |
135 | 209 | ZTEST_SUITE(ot_rpc_ip6, NULL, NULL, tc_setup, NULL, NULL); |
0 commit comments