nimble/host/test: Added unit tests for UUID from string

This commit is contained in:
Jakub Rotkiewicz
2023-07-28 16:10:57 +02:00
committed by Szymon Janc
parent 5812f7d982
commit ebae7a2252
+226 -5
View File
@@ -24,8 +24,75 @@
#include "host/ble_uuid.h"
#include "ble_hs_test_util.h"
TEST_CASE_SELF(ble_uuid_test)
{
#define DEBUG 0
#if DEBUG
#define DEBUG_PRINT(fmt, ...) printf(fmt, ## __VA_ARGS__)
#else
#define DEBUG_PRINT(fmt, ...)
#endif
#define TEST_UUID_128_1_STR "0329a25a-c4c4-4923-8039-4bacfa18eb72"
#define TEST_UUID_128_1 \
0x72, 0xeb, 0x18, 0xfa, 0xac, 0x4b, 0x39, 0x80, \
0x23, 0x49, 0xc4, 0xc4, 0x5a, 0xa2, 0x29, 0x03
#define TEST_UUID_128_2_STR "e3ec4966df944981a772985ff8d75dff"
#define TEST_UUID_128_2 \
0xff, 0x5d, 0xd7, 0xf8, 0x5f, 0x98, 0x72, 0xa7, \
0x81, 0x49, 0x94, 0xdf, 0x66, 0x49, 0xec, 0xe3
#define TEST_UUID_128_3_STR "00002a37-0000-1000-8000-00805f9b34fb"
#define TEST_UUID_128_3 \
0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, \
0x00, 0x10, 0x00, 0x00, 0x37, 0x2a, 0x00, 0x00
#define TEST_UUID_128_3_AS_16 ((uint16_t) 0x2a37)
#define TEST_32UUID1_STR "0x0329a25a"
#define TEST_32UUID1 ((uint32_t)0x0329a25a)
#define TEST_32UUID2_STR "e3ec4966"
#define TEST_32UUID2 ((uint32_t)0xe3ec4966)
#define TEST_16UUID1_STR "0x0329"
#define TEST_16UUID1 ((uint16_t)0x0329)
#define TEST_16UUID2_STR "e3ec"
#define TEST_16UUID2 ((uint16_t)0xe3ec)
static const ble_uuid128_t test_uuid128[4] = {
BLE_UUID128_INIT(TEST_UUID_128_1),
BLE_UUID128_INIT(TEST_UUID_128_2),
BLE_UUID128_INIT(TEST_UUID_128_3)
};
static const char test_str128[][100] = {
TEST_UUID_128_1_STR,
TEST_UUID_128_2_STR,
TEST_UUID_128_3_STR
};
static const ble_uuid32_t test_uuid32[3] = {
BLE_UUID32_INIT(TEST_32UUID1),
BLE_UUID32_INIT(TEST_32UUID2),
};
static const char test_str32[][100] = {
TEST_32UUID1_STR,
TEST_32UUID2_STR,
};
static const ble_uuid16_t test_uuid16[3] = {
BLE_UUID16_INIT(TEST_16UUID1),
BLE_UUID16_INIT(TEST_16UUID2),
};
static const char test_str16[][100] = {
TEST_16UUID1_STR,
TEST_16UUID2_STR,
};
TEST_CASE_SELF(ble_uuid_test) {
uint8_t buf_16[2] = { 0x00, 0x18 };
uint8_t buf_128[16] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
@@ -70,7 +137,161 @@ TEST_CASE_SELF(ble_uuid_test)
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_SUITE(ble_uuid_test_suite)
{
ble_uuid_test();
TEST_CASE_SELF(ble_uuid_from_string_test) {
int rc;
ble_uuid_any_t uuid128[3];
ble_uuid_any_t uuid32[3];
ble_uuid_any_t uuid16[3];
for (int i = 0; i < 2; i++) {
DEBUG_PRINT("Test 128bit: %d\n", i);
ble_uuid_from_str((ble_uuid_any_t * ) &uuid128[i], test_str128[i]);
DEBUG_PRINT("Original:\n");
for (int j = 0; j < 16; j++) {
DEBUG_PRINT("%2x, ", test_uuid128[i].value[j]);
}
DEBUG_PRINT("\nConverted:\n");
for (int j = 0; j < 16; j++) {
DEBUG_PRINT("%2x, ", uuid128[i].u128.value[j]);
}
DEBUG_PRINT("\n");
DEBUG_PRINT("The same: %s\n",
ble_uuid_cmp((const ble_uuid_t *) &uuid128[i].u128,
(const ble_uuid_t *) &test_uuid128[i]) == 0
? "true" : "false");
rc = ble_uuid_cmp((const ble_uuid_t *) &uuid128[i].u128,
(const ble_uuid_t *) &test_uuid128[i]);
TEST_ASSERT(rc == 0);
}
DEBUG_PRINT("\n");
DEBUG_PRINT("\n");
for (int i = 0; i < 2; i++) {
DEBUG_PRINT("Test 32bit: %d\n", i);
ble_uuid_from_str((ble_uuid_any_t * ) &uuid32[i], test_str32[i]);
DEBUG_PRINT("Original:\n");
DEBUG_PRINT("%x, ", test_uuid32[i].value);
DEBUG_PRINT("\nConverted:\n");
DEBUG_PRINT("%x, ", uuid32[i].u32.value);
DEBUG_PRINT("\n");
DEBUG_PRINT("The same: %s\n",
ble_uuid_cmp((const ble_uuid_t *) &uuid32[i].u32,
(const ble_uuid_t *) &test_uuid32[i]) == 0
? "true" : "false");
rc = ble_uuid_cmp((const ble_uuid_t *) &uuid32[i].u32,
(const ble_uuid_t *) &test_uuid32[i]);
TEST_ASSERT(rc == 0);
}
DEBUG_PRINT("\n");
DEBUG_PRINT("\n");
for (int i = 0; i < 2; i++) {
DEBUG_PRINT("Test 16bit: %d\n", i);
ble_uuid_from_str((ble_uuid_any_t * ) &uuid16[i], test_str16[i]);
DEBUG_PRINT("Original:\n");
DEBUG_PRINT("%x, ", test_uuid16[i].value);
DEBUG_PRINT("\nConverted:\n");
DEBUG_PRINT("%x, ", uuid16[i].u16.value);
DEBUG_PRINT("\n");
DEBUG_PRINT("The same: %s\n",
ble_uuid_cmp((const ble_uuid_t *) &uuid16[i].u16,
(const ble_uuid_t *) &test_uuid16[i]) == 0
? "true" : "false");
rc = ble_uuid_cmp((const ble_uuid_t *) &uuid16[i].u16,
(const ble_uuid_t *) &test_uuid16[i]);
TEST_ASSERT(rc == 0);
}
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_CASE_SELF(ble_uuid_from_string_sig_test) {
int rc;
ble_uuid_any_t uuid;
ble_uuid16_t test_uuid = BLE_UUID16_INIT(TEST_UUID_128_3_AS_16);
DEBUG_PRINT("Test %d\n", 0);
ble_uuid_from_str(&uuid, test_str128[2]);
DEBUG_PRINT("Original:\n");
for (int j = 0; j < 16; j++) {
DEBUG_PRINT("%2x, ", test_uuid128[2].value[j]);
}
DEBUG_PRINT("\nConverted:\n");
DEBUG_PRINT("%x\n", uuid.u16.value);
DEBUG_PRINT("The same: %s\n",
ble_uuid_cmp((const ble_uuid_t *) &uuid.u16,
(const ble_uuid_t *) &test_uuid) == 0 ? "true"
: "false");
rc = ble_uuid_cmp((const ble_uuid_t *)&uuid.u16,
(const ble_uuid_t *)&test_uuid);
TEST_ASSERT(rc == 0);
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_CASE_SELF(ble_uuid_to_str_and_back_test) {
int rc;
ble_uuid128_t uuid = BLE_UUID128_INIT(TEST_UUID_128_1);
ble_uuid_any_t final_uuid;
char uuid_str[100];
ble_uuid_to_str((const ble_uuid_t *)&uuid, uuid_str);
DEBUG_PRINT("String: %s\n", uuid_str);
rc = ble_uuid_from_str(&final_uuid, (const char *)uuid_str);
TEST_ASSERT(rc == 0);
rc = ble_uuid_cmp((const ble_uuid_t *)&uuid, (const ble_uuid_t *)&final_uuid.u128);
TEST_ASSERT(rc == 0);
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_CASE_SELF(ble_uuid_to_str_too_short) {
int rc;
ble_uuid_any_t final_uuid;
char uuid_str[4] = "012";
DEBUG_PRINT("String: %s\n", uuid_str);
rc = ble_uuid_from_str(&final_uuid, (const char *)uuid_str);
TEST_ASSERT(rc == BLE_HS_EINVAL);
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_CASE_SELF(ble_uuid_to_str_sig_to_16_and_32) {
int rc;
ble_uuid_any_t final_uuid;
char uuid_str16[37] = "0000ffff-0000-1000-8000-00805f9b34fb";
char uuid_str32[37] = "ffffffff-0000-1000-8000-00805f9b34fb";
DEBUG_PRINT("String16: %s\n", uuid_str16);
DEBUG_PRINT("String32: %s\n", uuid_str32);
rc = ble_uuid_from_str(&final_uuid, (const char *)uuid_str16);
TEST_ASSERT(rc == 0);
TEST_ASSERT(final_uuid.u.type == BLE_UUID_TYPE_16);
TEST_ASSERT(final_uuid.u16.value == UINT16_MAX);
memset(&final_uuid, 0, sizeof(ble_uuid_any_t));
rc = ble_uuid_from_str(&final_uuid, (const char *)uuid_str32);
TEST_ASSERT(rc == 0);
TEST_ASSERT(final_uuid.u.type == BLE_UUID_TYPE_32);
TEST_ASSERT(final_uuid.u32.value == UINT32_MAX);
ble_hs_test_util_assert_mbufs_freed(NULL);
}
TEST_SUITE(ble_uuid_test_suite) {
ble_uuid_test();
ble_uuid_from_string_test();
ble_uuid_from_string_sig_test();
ble_uuid_to_str_and_back_test();
ble_uuid_to_str_too_short();
ble_uuid_to_str_sig_to_16_and_32();
}