mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-05 01:54:22 +08:00
320 lines
5.7 KiB
C
320 lines
5.7 KiB
C
#include <bluetooth/bluetooth.h>
|
|
#include <bluetooth/uuid.h>
|
|
|
|
const char *base = "00000000-0000-1000-8000-00805F9B34FB";
|
|
|
|
uint8_t xbase[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
|
|
0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb};
|
|
|
|
uint16_t sixteen = 0x1234;
|
|
const char *uuidsixteen128 = "00001234-0000-1000-8000-00805F9B34FB";
|
|
const char *uuidsixteen16 = "0x1234";
|
|
const char *uuidsixteen16a = "1234";
|
|
|
|
uint8_t xuuidsixteen[] = {0x00, 0x00, 0x12, 0x34, 0x00, 0x00, 0x10, 0x00,
|
|
0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb};
|
|
|
|
uint32_t thirtytwo = 0x12345678;
|
|
const char *uuidthirtytwo32 = "0x12345678";
|
|
const char *uuidthirtytwo32a = "12345678";
|
|
const char *uuidthirtytwo128 = "12345678-0000-1000-8000-00805F9B34FB";
|
|
|
|
uint8_t xuuidthirtytwo[] = {0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x10, 0x00,
|
|
0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb};
|
|
|
|
const char *malformed[] = {
|
|
"0",
|
|
"01",
|
|
"012",
|
|
"xxxx",
|
|
"xxxxx",
|
|
"0xxxxx",
|
|
"0123456",
|
|
"012g4567",
|
|
"012345678",
|
|
"0x234567u9",
|
|
"01234567890",
|
|
"00001234-0000-1000-8000-00805F9B34F",
|
|
"00001234-0000-1000-8000 00805F9B34FB",
|
|
"00001234-0000-1000-8000-00805F9B34FBC",
|
|
"00001234-0000-1000-800G-00805F9B34FB",
|
|
NULL,
|
|
};
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
bt_uuid_t u, u2, u3, u4, u5, ub, u128;
|
|
uint128_t n, i;
|
|
char buf[512];
|
|
int s;
|
|
|
|
memcpy(&n, xbase, 16);
|
|
ntoh128(&n, &i);
|
|
|
|
if (bt_string_to_uuid(&u, base)) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_string_to_uuid(&ub, base)) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (ub.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (memcmp(&u.value.u128, &i, 16) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (memcmp(&ub.value.u128, &i, 16) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (memcmp(&ub.value.u128, &u.value.u128, 16) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &ub) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
bt_uuid_to_string(&u, buf, sizeof(buf));
|
|
/* printf("%s\n", buf); */
|
|
|
|
if (strcasecmp(buf, base) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
memcpy(&n, xuuidsixteen, 16);
|
|
ntoh128(&n, &i);
|
|
|
|
bt_uuid16_create(&u, sixteen);
|
|
bt_uuid_to_uuid128(&u, &u128);
|
|
|
|
if (bt_string_to_uuid(&u2, uuidsixteen16)) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_string_to_uuid(&u3, uuidsixteen16a)) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_string_to_uuid(&u4, uuidsixteen128)) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
bt_uuid128_create(&u5, i);
|
|
|
|
if (u.type != 16) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u128.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u.value.u16 != sixteen) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u2.type != 16) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u3.type != 16) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u4.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u5.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &u2) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u2, &u3) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &u3) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u3, &u4) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u4, &u5) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u5, &u) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &ub) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u5, &ub) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &u128) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&ub, &u128) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
memcpy(&n, xuuidthirtytwo, 16);
|
|
ntoh128(&n, &i);
|
|
|
|
bt_uuid32_create(&u, thirtytwo);
|
|
bt_uuid_to_uuid128(&u, &u128);
|
|
bt_string_to_uuid(&u2, uuidthirtytwo32);
|
|
bt_string_to_uuid(&u3, uuidthirtytwo32a);
|
|
bt_string_to_uuid(&u4, uuidthirtytwo128);
|
|
bt_uuid128_create(&u5, i);
|
|
|
|
/*
|
|
bt_uuid_to_string(&u2, buf, sizeof(buf));
|
|
printf("%s\n", buf);
|
|
|
|
bt_uuid_to_string(&u3, buf, sizeof(buf));
|
|
printf("%s\n", buf);
|
|
|
|
bt_uuid_to_string(&u4, buf, sizeof(buf));
|
|
printf("%s\n", buf);
|
|
*/
|
|
|
|
if (u.type != 32) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u128.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u.value.u32 != thirtytwo) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u2.type != 32) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u3.type != 32) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u4.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (u5.type != 128) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &u2) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u2, &u3) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u3, &u4) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u4, &u5) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u5, &u) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &ub) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u5, &ub) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&u, &u128) != 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
if (bt_uuid_cmp(&ub, &u128) == 0) {
|
|
printf("Fail %d\n", __LINE__);
|
|
return 1;
|
|
}
|
|
|
|
for (s = 0; malformed[s]; ++s) {
|
|
if (bt_string_to_uuid(&u3, malformed[s]) == 0) {
|
|
printf("Fail %s %d\n", malformed[s], __LINE__);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|