Path: blob/main/contrib/libcbor/test/negint_encoders_test.c
39481 views
/*1* Copyright (c) 2014-2020 Pavel Kalvoda <[email protected]>2*3* libcbor is free software; you can redistribute it and/or modify4* it under the terms of the MIT license. See LICENSE for details.5*/67#include "assertions.h"8#include "cbor.h"910unsigned char buffer[512];1112static void test_embedded_negint8(void **_CBOR_UNUSED(_state)) {13assert_size_equal(1, cbor_encode_negint8(14, buffer, 512));14assert_memory_equal(buffer, (unsigned char[]){0x2E}, 1);15}1617static void test_negint8(void **_CBOR_UNUSED(_state)) {18assert_size_equal(0, cbor_encode_negint8(180, buffer, 1));19assert_size_equal(2, cbor_encode_negint8(255, buffer, 512));20assert_memory_equal(buffer, ((unsigned char[]){0x38, 0xFF}), 2);21}2223static void test_negint16(void **_CBOR_UNUSED(_state)) {24assert_size_equal(0, cbor_encode_negint16(1000, buffer, 2));25assert_size_equal(3, cbor_encode_negint16(1000, buffer, 512));26assert_memory_equal(buffer, ((unsigned char[]){0x39, 0x03, 0xE8}), 3);27}2829static void test_negint32(void **_CBOR_UNUSED(_state)) {30assert_size_equal(0, cbor_encode_negint32(1000000, buffer, 4));31assert_size_equal(5, cbor_encode_negint32(1000000, buffer, 512));32assert_memory_equal(buffer, ((unsigned char[]){0x3A, 0x00, 0x0F, 0x42, 0x40}),335);34}3536static void test_negint64(void **_CBOR_UNUSED(_state)) {37assert_size_equal(0,38cbor_encode_negint64(18446744073709551615ULL, buffer, 8));39assert_size_equal(9,40cbor_encode_negint64(18446744073709551615ULL, buffer, 512));41assert_memory_equal(42buffer,43((unsigned char[]){0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}),449);45}4647static void test_unspecified(void **_CBOR_UNUSED(_state)) {48assert_size_equal(9,49cbor_encode_negint(18446744073709551615ULL, buffer, 512));50assert_memory_equal(51buffer,52((unsigned char[]){0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}),539);54assert_size_equal(5, cbor_encode_negint(1000000, buffer, 512));55assert_memory_equal(buffer, ((unsigned char[]){0x3A, 0x00, 0x0F, 0x42, 0x40}),565);57assert_size_equal(3, cbor_encode_negint(1000, buffer, 512));58assert_memory_equal(buffer, ((unsigned char[]){0x39, 0x03, 0xE8}), 3);59assert_size_equal(2, cbor_encode_negint(255, buffer, 512));60assert_memory_equal(buffer, ((unsigned char[]){0x38, 0xFF}), 2);61}6263int main(void) {64const struct CMUnitTest tests[] = {cmocka_unit_test(test_embedded_negint8),65cmocka_unit_test(test_negint8),66cmocka_unit_test(test_negint16),67cmocka_unit_test(test_negint32),68cmocka_unit_test(test_negint64),69cmocka_unit_test(test_unspecified)};70return cmocka_run_group_tests(tests, NULL, NULL);71}727374