Files
utun2/lib/ble/tests/test_ble_identity.c
T

35 lines
2.1 KiB
C

#include "ble_identity.h"
#include "debug_config.h"
#include <assert.h>
#include <string.h>
#include <stdio.h>
int main(void) {
debug_config_init();
uint8_t bytes[24]; struct ble_identity peer;
int n = ble_identity_encode(bytes, 0x0102030405060708ULL, "АБВГДЕЖ");
assert(n == 23 && bytes[0] == 'V' && bytes[1] == 'C' && bytes[2] == BLE_IDENTITY_VERSION && bytes[3] == 1 && bytes[10] == 8);
assert(ble_identity_decode(&peer, bytes, n) == 0);
assert(peer.node_id == 0x0102030405060708ULL && !strcmp(peer.name, "АБВГДЕ"));
assert(ble_identity_encode(bytes, 1, "123456789012😀") == 23);
assert(ble_identity_encode(bytes, 1, "1234567890123tail") == 24);
assert(ble_identity_decode(&peer, bytes, 24) == 0 && !strcmp(peer.name, "1234567890123"));
struct ble_identity saved = peer;
assert(ble_identity_decode(NULL, bytes, 24) == BLE_IDENTITY_ERR_ARGUMENT);
assert(ble_identity_decode(&peer, NULL, 24) == BLE_IDENTITY_ERR_ARGUMENT);
assert(ble_identity_decode(&peer, bytes, 0) == BLE_IDENTITY_ERR_LENGTH);
assert(ble_identity_decode(&peer, bytes, 10) == BLE_IDENTITY_ERR_LENGTH);
assert(ble_identity_decode(&peer, bytes, 25) == BLE_IDENTITY_ERR_LENGTH);
bytes[0] = 'X'; assert(ble_identity_decode(&peer, bytes, 24) == BLE_IDENTITY_ERR_MAGIC); bytes[0] = 'V';
for (int version = 0; version < 256; version++) if (version != BLE_IDENTITY_VERSION) {
bytes[2] = version; assert(ble_identity_decode(&peer, bytes, 24) == BLE_IDENTITY_ERR_VERSION);
}
assert(!memcmp(&peer, &saved, sizeof(peer))); /* Отказ не публикует частично разобранный результат. */
n = ble_identity_encode(bytes, 1, ""); assert(n == 11 && ble_identity_decode(&peer, bytes, n) == 0);
bytes[11] = 0xc0; bytes[12] = 0x80; assert(ble_identity_decode(&peer, bytes, 13) == BLE_IDENTITY_ERR_UTF8);
bytes[10] = 0; assert(ble_identity_decode(&peer, bytes, 11) == BLE_IDENTITY_ERR_NODE);
assert(peer.node_id == 1 && !peer.name[0]);
assert(ble_identity_encode(bytes, 0, "name") < 0);
assert(ble_identity_encode(bytes, 1, "\xed\xa0\x80") < 0);
puts("BLE identity PASS"); return 0;
}