*/
#include <gtest/gtest.h>
+#include <arpa/inet.h>
#include "thread.h"
"fffe00208763d64768c8f3ecf0708fdd10ceaadb65a7b05105e1ec3e" \
"16d3e0aee52fb7e618a759973030f4f70656e5468726561642d34633" \
"33801024c3804103044b2dc6512dce13b11d3386eb2ce7e0c0402a0fff8"
+#define DUMMY_IPV6_ADDRESS "fe80::1ee5:a5a9:8bd2:68de"
class ThreadNetworkTest : public ::testing::Test
{
uint16_t panId;
uint8_t tlvsBuffer[NETWORK_TLVS_SIZE];
int tlvsBufferLength;
+ uint8_t ipv6Address[THREAD_IPV6_ADDRESS_SIZE];
public:
static void getIpAddrCallback(int index, char* ipaddr,
panId = 65535;
makeTlvsBuffer();
tlvsBufferLength = DUMMY_TLVS_SIZE;
+ makeIpv6Address();
}
void TearDown() override
tlvsBuffer[i] = (uint8_t)strtol(subBuffer, NULL, 16);
}
}
+
+ void makeIpv6Address()
+ {
+ struct in6_addr result;
+ inet_pton(AF_INET6, DUMMY_IPV6_ADDRESS, &result);
+ memcpy(ipv6Address, result.s6_addr,
+ THREAD_IPV6_PREFIX_SIZE * sizeof(uint8_t));
+ }
};
TEST_F(ThreadNetworkTest, CreateOperationalNetworkNotInitialized)
EXPECT_EQ(THREAD_ERROR_NONE,
thread_get_ipaddr(instance, getIpAddrCallback,
THREAD_IPADDR_TYPE_MLEID, nullptr));
+}
+
+TEST_F(ThreadNetworkTest, AddIpAddrNotInitialized)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_deinitialize());
+ EXPECT_EQ(THREAD_ERROR_NOT_INITIALIZED,
+ thread_add_ipaddr(instance, ipv6Address));
+}
+
+TEST_F(ThreadNetworkTest, AddIpAddrInvalidParameter)
+{
+ EXPECT_EQ(THREAD_ERROR_INVALID_PARAMETER,
+ thread_add_ipaddr(instance, ipv6Address));
+}
+
+TEST_F(ThreadNetworkTest, AddIpAddrErrorNone)
+{
+ EXPECT_EQ(THREAD_ERROR_NONE, thread_enable(&instance));
+ EXPECT_EQ(THREAD_ERROR_NONE,
+ thread_add_ipaddr(instance, ipv6Address));
}
\ No newline at end of file