From 9b88ed41457648a60810cddeb25d383fc85787d8 Mon Sep 17 00:00:00 2001 From: "hyunuk.tak" Date: Mon, 28 Mar 2022 16:50:59 +0900 Subject: [PATCH] Add border router test case for adding onmesh prefix Change-Id: Id9e3c86ae269530be91fc308e71a71fc093dad19 Signed-off-by: hyunuk.tak --- tests/unittest/thread-unittest-br.cpp | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/tests/unittest/thread-unittest-br.cpp b/tests/unittest/thread-unittest-br.cpp index 9ca4904..cf7b5f5 100644 --- a/tests/unittest/thread-unittest-br.cpp +++ b/tests/unittest/thread-unittest-br.cpp @@ -31,8 +31,19 @@ public: bool isStable; bool isDeviceNextHop; + uint8_t onmeshIpv6Prefix[THREAD_IPV6_PREFIX_SIZE]; + uint8_t onmeshIpv6PrefixLen; + bool preferred; + bool slaac; + bool dhcp; + bool configure; + bool defaultRoute; + bool onMesh; + bool stable; + thread_instance_h instance; thread_route_info_h routeInfo; + thread_onmesh_prefix_info_h onmeshPrefix; public: static bool GetExternalRoutesCallback(int total, @@ -52,6 +63,15 @@ protected: preference = 0; isStable = TRUE; isDeviceNextHop = TRUE; + makeOnmeshIpv6Prefix(); + onmeshIpv6PrefixLen = THREAD_IPV6_PREFIX_SIZE; + preferred = true; + slaac = true; + dhcp = true; + configure = true; + defaultRoute = true; + onMesh = true; + stable = true; } void TearDown() override @@ -69,6 +89,14 @@ private: memcpy(ipv6Prefix, result.s6_addr, THREAD_IPV6_PREFIX_SIZE * sizeof(uint8_t)); } + + void makeOnmeshIpv6Prefix() + { + struct in6_addr result; + inet_pton(AF_INET6, DUMMY_IPV6_ADDRESS, &result); + memcpy(ipv6Prefix, result.s6_addr, + THREAD_IPV6_PREFIX_SIZE * sizeof(uint8_t)); + } }; TEST_F(ThreadBRTest, BREnableNotInitialized) @@ -195,4 +223,40 @@ TEST_F(ThreadBRTest, BRRemoveExternalRouteErrorNone) rloc16, preference, isStable, isDeviceNextHop, &routeInfo)); EXPECT_EQ(THREAD_ERROR_NONE, thread_br_remove_external_route(instance, routeInfo)); +} + +TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotInitialized) +{ + EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize()); + EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED, + thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix, + onmeshIpv6PrefixLen, preference, preferred, slaac, + dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix)); +} + +TEST_F(ThreadBRTest, BRAddOnmeshPrefixInvalidParameter) +{ + EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER, + thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix, + onmeshIpv6PrefixLen, preference, preferred, slaac, + dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix)); +} + +TEST_F(ThreadBRTest, BRAddOnmeshPrefixNotEnabled) +{ + EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance)); + EXPECT_EQ(THREAD_ERROR_NOT_ENABLED, + thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix, + onmeshIpv6PrefixLen, preference, preferred, slaac, + dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix)); +} + +TEST_F(ThreadBRTest, BRAddOnmeshPrefixErrorNone) +{ + EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance)); + EXPECT_EQ(THREAD_ERROR_NONE, thread_br_enable(instance)); + EXPECT_EQ(THREAD_ERROR_NONE, + thread_br_add_onmesh_prefix(instance, onmeshIpv6Prefix, + onmeshIpv6PrefixLen, preference, preferred, slaac, + dhcp, configure, defaultRoute, onMesh, stable, &onmeshPrefix)); } \ No newline at end of file -- 2.7.4