Add thread_network_create API with unittest 29/273129/1
authorhyunuk.tak <hyunuk.tak@samsung.com>
Wed, 30 Mar 2022 01:00:22 +0000 (10:00 +0900)
committerhyunuk.tak <hyunuk.tak@samsung.com>
Thu, 31 Mar 2022 00:59:06 +0000 (09:59 +0900)
Change-Id: I2a7a6c2fe57140c50a4b600408f2d27509f9a0a2
Signed-off-by: hyunuk.tak <hyunuk.tak@samsung.com>
src/thread-network.c
tests/unittest/thread-unittest-network.cpp

index 83bf963..1f62717 100644 (file)
 #include "thread-dbus-handler.h"
 #include "thread-socket-handler.h"
 
-/* LCOV_EXCL_START */
+#define THREAD_NETWORK_DEFAULT_NAME ""
+#define THREAD_NETWORK_DEFAULT_KEY ""
+#define THREAD_NETWORK_DEFAULT_PSKC ""
+#define THREAD_NETWORK_DEFAULT_CHANNEL 0
+#define THREAD_NETWORK_DEFAULT_EXTENDED_PANID 0
+#define THREAD_NETWORK_DEFAULT_PANID 0
 
+/* LCOV_EXCL_START */
 void _thread_network_free(thread_network_h network)
 {
        FUNC_ENTRY;
@@ -45,6 +51,39 @@ void _thread_network_free(thread_network_h network)
        FUNC_EXIT;
 }
 
+int thread_network_create(thread_network_h *network)
+{
+       FUNC_ENTRY;
+       THREAD_CHECK_SUPPORTED_FEATURE(THREAD_FEATURE_COMMON);
+       THREAD_CHECK_INIT_STATUS();
+       THREAD_VALIDATE_INPUT_PARAMETER(network);
+
+       thread_network_s *new_network = NULL;
+       new_network = g_malloc0(sizeof(thread_network_s));
+       if (!new_network) {
+               /* LCOV_EXCL_START */
+               THREAD_ERR("g_malloc0 failed");
+               FUNC_EXIT;
+               return THREAD_ERROR_OUT_OF_MEMORY;
+               /* LCOV_EXCL_STOP */
+       }
+
+       new_network->is_network_active = FALSE;
+       (void)g_strlcpy(new_network->name,
+               THREAD_NETWORK_DEFAULT_NAME, THREAD_NETWORK_NAME_MAX + 1);
+       (void)g_strlcpy(new_network->key,
+               THREAD_NETWORK_DEFAULT_KEY, THREAD_NETWORK_KEY_STRING_MAX + 1);
+       (void)g_strlcpy(new_network->pskc,
+               THREAD_NETWORK_DEFAULT_PSKC, THREAD_NETWORK_PSKC_STRING_MAX + 1);
+       new_network->channel = THREAD_NETWORK_DEFAULT_CHANNEL;
+       new_network->extended_panid = THREAD_NETWORK_DEFAULT_EXTENDED_PANID;
+       new_network->panid = THREAD_NETWORK_DEFAULT_PANID;
+       *network = (thread_network_h)new_network;
+
+       FUNC_EXIT;
+       return THREAD_ERROR_NONE;
+}
+
 /* Network leader/Creator */
 int thread_network_create_operational_network(thread_instance_h instance,
        const char *name, const char *key, const char *pskc, uint32_t channel,
index a2b40aa..b7f1af4 100644 (file)
@@ -320,3 +320,20 @@ TEST_F(ThreadNetworkTest, GetPanIdErrorNone)
        EXPECT_EQ(THREAD_ERROR_NONE,
                thread_network_get_panid(instance, &panid));
 }
+
+TEST_F(ThreadNetworkTest, CreateNotInitialized)
+{
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());
+       EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED, thread_network_create(&network));
+}
+
+TEST_F(ThreadNetworkTest, CreateInvalidParameter)
+{
+       EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER, thread_network_create(nullptr));
+}
+
+TEST_F(ThreadNetworkTest, CreateErrorNone)
+{
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+       EXPECT_EQ(THREAD_ERROR_NONE, thread_network_create(&network));
+}