Add border router test case for adding onmesh prefix 12/273112/1
authorhyunuk.tak <hyunuk.tak@samsung.com>
Mon, 28 Mar 2022 07:50:59 +0000 (16:50 +0900)
committerhyunuk.tak <hyunuk.tak@samsung.com>
Thu, 31 Mar 2022 00:57:02 +0000 (09:57 +0900)
Change-Id: Id9e3c86ae269530be91fc308e71a71fc093dad19
Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
tests/unittest/thread-unittest-br.cpp

index 9ca4904c9e48d3bff4c57362e6dd4299d1e499a1..cf7b5f5f01fac21b7d69ffb3b71617e2f27c125d 100644 (file)
@@ -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