110ff414cSEd Maste /* 210ff414cSEd Maste * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com> 310ff414cSEd Maste * 410ff414cSEd Maste * libcbor is free software; you can redistribute it and/or modify 510ff414cSEd Maste * it under the terms of the MIT license. See LICENSE for details. 610ff414cSEd Maste */ 710ff414cSEd Maste 810ff414cSEd Maste #include "assertions.h" 910ff414cSEd Maste #include "cbor.h" 1010ff414cSEd Maste #include "stream_expectations.h" 1110ff414cSEd Maste 125d3e7166SEd Maste static void test_no_data(void **_CBOR_UNUSED(_state)) { 1310ff414cSEd Maste assert_decoder_result_nedata(1, decode(NULL, 0)); 1410ff414cSEd Maste } 1510ff414cSEd Maste 1610ff414cSEd Maste unsigned char embedded_uint8_data[] = {0x00, 0x01, 0x05, 0x17}; 175d3e7166SEd Maste static void test_uint8_embedded_decoding(void **_CBOR_UNUSED(_state)) { 1810ff414cSEd Maste assert_uint8_eq(0); 1910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 2010ff414cSEd Maste decode(embedded_uint8_data, 1)); 2110ff414cSEd Maste 2210ff414cSEd Maste assert_uint8_eq(1); 2310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 2410ff414cSEd Maste decode(embedded_uint8_data + 1, 1)); 2510ff414cSEd Maste 2610ff414cSEd Maste assert_uint8_eq(5); 2710ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 2810ff414cSEd Maste decode(embedded_uint8_data + 2, 1)); 2910ff414cSEd Maste 3010ff414cSEd Maste assert_uint8_eq(23); 3110ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3210ff414cSEd Maste decode(embedded_uint8_data + 3, 1)); 3310ff414cSEd Maste } 3410ff414cSEd Maste 3510ff414cSEd Maste unsigned char uint8_data[] = {0x18, 0x83, 0x18, 0xFF}; 365d3e7166SEd Maste static void test_uint8_decoding(void **_CBOR_UNUSED(_state)) { 3710ff414cSEd Maste assert_uint8_eq(0x83); 3810ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(uint8_data, 2)); 3910ff414cSEd Maste 4010ff414cSEd Maste assert_uint8_eq(0xFF); 4110ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(uint8_data + 2, 2)); 4210ff414cSEd Maste 4310ff414cSEd Maste assert_minimum_input_size(2, uint8_data); 4410ff414cSEd Maste } 4510ff414cSEd Maste 4610ff414cSEd Maste unsigned char uint16_data[] = {0x19, 0x01, 0xf4}; 475d3e7166SEd Maste static void test_uint16_decoding(void **_CBOR_UNUSED(_state)) { 4810ff414cSEd Maste assert_uint16_eq(500); 4910ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(uint16_data, 3)); 5010ff414cSEd Maste 5110ff414cSEd Maste assert_minimum_input_size(3, uint16_data); 5210ff414cSEd Maste } 5310ff414cSEd Maste 5410ff414cSEd Maste unsigned char uint32_data[] = {0x1a, 0xa5, 0xf7, 0x02, 0xb3}; 555d3e7166SEd Maste static void test_uint32_decoding(void **_CBOR_UNUSED(_state)) { 5610ff414cSEd Maste assert_uint32_eq((uint32_t)2784428723UL); 5710ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(uint32_data, 5)); 5810ff414cSEd Maste 5910ff414cSEd Maste assert_minimum_input_size(5, uint32_data); 6010ff414cSEd Maste } 6110ff414cSEd Maste 6210ff414cSEd Maste unsigned char uint64_data[] = {0x1b, 0xa5, 0xf7, 0x02, 0xb3, 6310ff414cSEd Maste 0xa5, 0xf7, 0x02, 0xb3}; 645d3e7166SEd Maste static void test_uint64_decoding(void **_CBOR_UNUSED(_state)) { 6510ff414cSEd Maste assert_uint64_eq(11959030306112471731ULL); 6610ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(uint64_data, 9)); 6710ff414cSEd Maste 6810ff414cSEd Maste assert_minimum_input_size(9, uint64_data); 6910ff414cSEd Maste } 7010ff414cSEd Maste 7110ff414cSEd Maste unsigned char embedded_negint8_data[] = {0x20, 0x21, 0x25, 0x37}; 725d3e7166SEd Maste static void test_negint8_embedded_decoding(void **_CBOR_UNUSED(_state)) { 7310ff414cSEd Maste assert_negint8_eq(0); 7410ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 7510ff414cSEd Maste decode(embedded_negint8_data, 1)); 7610ff414cSEd Maste 7710ff414cSEd Maste assert_negint8_eq(1); 7810ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 7910ff414cSEd Maste decode(embedded_negint8_data + 1, 1)); 8010ff414cSEd Maste 8110ff414cSEd Maste assert_negint8_eq(5); 8210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 8310ff414cSEd Maste decode(embedded_negint8_data + 2, 1)); 8410ff414cSEd Maste 8510ff414cSEd Maste assert_negint8_eq(23); 8610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 8710ff414cSEd Maste decode(embedded_negint8_data + 3, 1)); 8810ff414cSEd Maste } 8910ff414cSEd Maste 9010ff414cSEd Maste unsigned char negint8_data[] = {0x38, 0x83, 0x38, 0xFF}; 915d3e7166SEd Maste static void test_negint8_decoding(void **_CBOR_UNUSED(_state)) { 9210ff414cSEd Maste assert_negint8_eq(0x83); 9310ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(negint8_data, 2)); 9410ff414cSEd Maste 9510ff414cSEd Maste assert_negint8_eq(0xFF); 9610ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(negint8_data + 2, 2)); 9710ff414cSEd Maste 9810ff414cSEd Maste assert_minimum_input_size(2, negint8_data); 9910ff414cSEd Maste } 10010ff414cSEd Maste 10110ff414cSEd Maste unsigned char negint16_data[] = {0x39, 0x01, 0xf4}; 1025d3e7166SEd Maste static void test_negint16_decoding(void **_CBOR_UNUSED(_state)) { 10310ff414cSEd Maste assert_negint16_eq(500); 10410ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(negint16_data, 3)); 10510ff414cSEd Maste 10610ff414cSEd Maste assert_minimum_input_size(3, negint16_data); 10710ff414cSEd Maste } 10810ff414cSEd Maste 10910ff414cSEd Maste unsigned char negint32_data[] = {0x3a, 0xa5, 0xf7, 0x02, 0xb3}; 1105d3e7166SEd Maste static void test_negint32_decoding(void **_CBOR_UNUSED(_state)) { 11110ff414cSEd Maste assert_negint32_eq((uint32_t)2784428723UL); 11210ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(negint32_data, 5)); 11310ff414cSEd Maste 11410ff414cSEd Maste assert_minimum_input_size(5, negint32_data); 11510ff414cSEd Maste } 11610ff414cSEd Maste 11710ff414cSEd Maste unsigned char negint64_data[] = {0x3b, 0xa5, 0xf7, 0x02, 0xb3, 11810ff414cSEd Maste 0xa5, 0xf7, 0x02, 0xb3}; 1195d3e7166SEd Maste static void test_negint64_decoding(void **_CBOR_UNUSED(_state)) { 12010ff414cSEd Maste assert_negint64_eq(11959030306112471731ULL); 12110ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(negint64_data, 9)); 12210ff414cSEd Maste 12310ff414cSEd Maste assert_minimum_input_size(9, negint64_data); 12410ff414cSEd Maste } 12510ff414cSEd Maste 12610ff414cSEd Maste unsigned char bstring_embedded_int8_data[] = {0x41, 0xFF}; 1275d3e7166SEd Maste static void test_bstring_embedded_int8_decoding(void **_CBOR_UNUSED(_state)) { 12810ff414cSEd Maste assert_bstring_mem_eq(bstring_embedded_int8_data + 1, 1); 12910ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 13010ff414cSEd Maste decode(bstring_embedded_int8_data, 2)); 13110ff414cSEd Maste 13210ff414cSEd Maste assert_minimum_input_size(2, bstring_embedded_int8_data); 13310ff414cSEd Maste } 13410ff414cSEd Maste 1355d3e7166SEd Maste // The callback returns a *pointer* to the the start of the data segment (after 1365d3e7166SEd Maste // the second byte of input); the data is never read, so we never run into 1375d3e7166SEd Maste // memory issues despite not allocating and initializing all the data. 1385d3e7166SEd Maste unsigned char bstring_int8_data[] = {0x58, 0x02 /*, [2 bytes] */}; 1395d3e7166SEd Maste static void test_bstring_int8_decoding(void **_CBOR_UNUSED(_state)) { 1405d3e7166SEd Maste assert_bstring_mem_eq(bstring_int8_data + 2, 2); 1415d3e7166SEd Maste assert_decoder_result(4, CBOR_DECODER_FINISHED, decode(bstring_int8_data, 4)); 14210ff414cSEd Maste 14310ff414cSEd Maste assert_minimum_input_size(2, bstring_int8_data); 1445d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 2 + 2, 1455d3e7166SEd Maste decode(bstring_int8_data, 2)); 1465d3e7166SEd Maste } 1475d3e7166SEd Maste 1485d3e7166SEd Maste unsigned char bstring_int8_empty_data[] = {0x58, 0x00}; 1495d3e7166SEd Maste static void test_bstring_int8_empty_decoding(void **_CBOR_UNUSED(_state)) { 1505d3e7166SEd Maste assert_bstring_mem_eq(bstring_int8_empty_data + 2, 0); 1515d3e7166SEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 1525d3e7166SEd Maste decode(bstring_int8_empty_data, 2)); 1535d3e7166SEd Maste 1545d3e7166SEd Maste assert_minimum_input_size(2, bstring_int8_empty_data); 15510ff414cSEd Maste } 15610ff414cSEd Maste 15710ff414cSEd Maste unsigned char bstring_int16_data[] = {0x59, 0x01, 0x5C /*, [348 bytes] */}; 1585d3e7166SEd Maste static void test_bstring_int16_decoding(void **_CBOR_UNUSED(_state)) { 15910ff414cSEd Maste assert_bstring_mem_eq(bstring_int16_data + 3, 348); 16010ff414cSEd Maste assert_decoder_result(3 + 348, CBOR_DECODER_FINISHED, 16110ff414cSEd Maste decode(bstring_int16_data, 3 + 348)); 16210ff414cSEd Maste 16310ff414cSEd Maste assert_minimum_input_size(3, bstring_int16_data); 1645d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 3 + 348, 1655d3e7166SEd Maste decode(bstring_int16_data, 3)); 16610ff414cSEd Maste } 16710ff414cSEd Maste 16810ff414cSEd Maste unsigned char bstring_int32_data[] = {0x5A, 0x00, 0x10, 0x10, 16910ff414cSEd Maste 0x10 /*, [1052688 bytes] */}; 1705d3e7166SEd Maste static void test_bstring_int32_decoding(void **_CBOR_UNUSED(_state)) { 17110ff414cSEd Maste assert_bstring_mem_eq(bstring_int32_data + 5, 1052688); 17210ff414cSEd Maste assert_decoder_result(5 + 1052688, CBOR_DECODER_FINISHED, 17310ff414cSEd Maste decode(bstring_int32_data, 5 + 1052688)); 17410ff414cSEd Maste 17510ff414cSEd Maste assert_minimum_input_size(5, bstring_int32_data); 1765d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 5 + 1052688, 1775d3e7166SEd Maste decode(bstring_int32_data, 5)); 17810ff414cSEd Maste } 17910ff414cSEd Maste 18010ff414cSEd Maste #ifdef EIGHT_BYTE_SIZE_T 18110ff414cSEd Maste unsigned char bstring_int64_data[] = { 18210ff414cSEd Maste 0x5B, 0x00, 0x00, 0x00, 0x01, 18310ff414cSEd Maste 0x00, 0x00, 0x00, 0x00 /*, [4294967296 bytes] */}; 1845d3e7166SEd Maste static void test_bstring_int64_decoding(void **_CBOR_UNUSED(_state)) { 18510ff414cSEd Maste assert_bstring_mem_eq(bstring_int64_data + 9, 4294967296); 18610ff414cSEd Maste assert_decoder_result(9 + 4294967296, CBOR_DECODER_FINISHED, 18710ff414cSEd Maste decode(bstring_int64_data, 9 + 4294967296)); 18810ff414cSEd Maste 18910ff414cSEd Maste assert_minimum_input_size(9, bstring_int64_data); 1905d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 9 + 4294967296, 1915d3e7166SEd Maste decode(bstring_int64_data, 9)); 19210ff414cSEd Maste } 19310ff414cSEd Maste #endif 19410ff414cSEd Maste 19510ff414cSEd Maste unsigned char bstring_indef_1_data[] = {0x5F, 0x40 /* Empty byte string */, 19610ff414cSEd Maste 0xFF}; 1975d3e7166SEd Maste static void test_bstring_indef_decoding_1(void **_CBOR_UNUSED(_state)) { 19810ff414cSEd Maste assert_bstring_indef_start(); 19910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 20010ff414cSEd Maste decode(bstring_indef_1_data, 3)); 20110ff414cSEd Maste 20210ff414cSEd Maste assert_bstring_mem_eq(bstring_indef_1_data + 2, 0); 20310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 20410ff414cSEd Maste decode(bstring_indef_1_data + 1, 2)); 20510ff414cSEd Maste 20610ff414cSEd Maste assert_indef_break(); 20710ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 20810ff414cSEd Maste decode(bstring_indef_1_data + 2, 1)); 20910ff414cSEd Maste } 21010ff414cSEd Maste 21110ff414cSEd Maste unsigned char bstring_indef_2_data[] = {0x5F, 0xFF}; 2125d3e7166SEd Maste static void test_bstring_indef_decoding_2(void **_CBOR_UNUSED(_state)) { 21310ff414cSEd Maste assert_bstring_indef_start(); 21410ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 21510ff414cSEd Maste decode(bstring_indef_2_data, 2)); 21610ff414cSEd Maste 21710ff414cSEd Maste assert_indef_break(); 21810ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 21910ff414cSEd Maste decode(bstring_indef_2_data + 1, 1)); 22010ff414cSEd Maste } 22110ff414cSEd Maste 2225d3e7166SEd Maste unsigned char bstring_indef_3_data[] = {0x5F, 2235d3e7166SEd Maste // Empty byte string 2245d3e7166SEd Maste 0x40, 2255d3e7166SEd Maste // 1B, 1 character byte string 2265d3e7166SEd Maste 0x58, 0x01, 0x00, 2275d3e7166SEd Maste // Break 2285d3e7166SEd Maste 0xFF}; 2295d3e7166SEd Maste static void test_bstring_indef_decoding_3(void **_CBOR_UNUSED(_state)) { 23010ff414cSEd Maste assert_bstring_indef_start(); 23110ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 23210ff414cSEd Maste decode(bstring_indef_3_data, 6)); 23310ff414cSEd Maste 23410ff414cSEd Maste assert_bstring_mem_eq(bstring_indef_3_data + 2, 0); 23510ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 23610ff414cSEd Maste decode(bstring_indef_3_data + 1, 5)); 23710ff414cSEd Maste 23810ff414cSEd Maste assert_bstring_mem_eq(bstring_indef_3_data + 4, 1); 23910ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, 24010ff414cSEd Maste decode(bstring_indef_3_data + 2, 4)); 24110ff414cSEd Maste 24210ff414cSEd Maste assert_indef_break(); 24310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 24410ff414cSEd Maste decode(bstring_indef_3_data + 5, 1)); 24510ff414cSEd Maste } 24610ff414cSEd Maste 2475d3e7166SEd Maste unsigned char string_embedded_int8_data[] = {0x61, 0xFF}; 2485d3e7166SEd Maste static void test_string_embedded_int8_decoding(void **_CBOR_UNUSED(_state)) { 2495d3e7166SEd Maste assert_string_mem_eq(string_embedded_int8_data + 1, 1); 2505d3e7166SEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 2515d3e7166SEd Maste decode(string_embedded_int8_data, 2)); 2525d3e7166SEd Maste 2535d3e7166SEd Maste assert_minimum_input_size(2, string_embedded_int8_data); 2545d3e7166SEd Maste } 2555d3e7166SEd Maste 2565d3e7166SEd Maste // The callback returns a *pointer* to the the start of the data segment (after 2575d3e7166SEd Maste // the second byte of input); the data is never read, so we never run into 2585d3e7166SEd Maste // memory issues despite not allocating and initializing all the data. 2595d3e7166SEd Maste unsigned char string_int8_data[] = {0x78, 0x02 /*, [2 bytes] */}; 2605d3e7166SEd Maste static void test_string_int8_decoding(void **_CBOR_UNUSED(_state)) { 2615d3e7166SEd Maste assert_string_mem_eq(string_int8_data + 2, 2); 2625d3e7166SEd Maste assert_decoder_result(4, CBOR_DECODER_FINISHED, decode(string_int8_data, 4)); 2635d3e7166SEd Maste 2645d3e7166SEd Maste assert_minimum_input_size(2, string_int8_data); 2655d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 2 + 2, 2665d3e7166SEd Maste decode(string_int8_data, 2)); 2675d3e7166SEd Maste } 2685d3e7166SEd Maste 2695d3e7166SEd Maste unsigned char string_int8_empty_data[] = {0x78, 0x00}; 2705d3e7166SEd Maste static void test_string_int8_empty_decoding(void **_CBOR_UNUSED(_state)) { 2715d3e7166SEd Maste assert_string_mem_eq(string_int8_empty_data + 2, 0); 2725d3e7166SEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 2735d3e7166SEd Maste decode(string_int8_empty_data, 2)); 2745d3e7166SEd Maste 2755d3e7166SEd Maste assert_minimum_input_size(2, string_int8_empty_data); 2765d3e7166SEd Maste } 2775d3e7166SEd Maste 2785d3e7166SEd Maste unsigned char string_int16_data[] = {0x79, 0x01, 0x5C /*, [348 bytes] */}; 2795d3e7166SEd Maste static void test_string_int16_decoding(void **_CBOR_UNUSED(_state)) { 2805d3e7166SEd Maste assert_string_mem_eq(string_int16_data + 3, 348); 2815d3e7166SEd Maste assert_decoder_result(3 + 348, CBOR_DECODER_FINISHED, 2825d3e7166SEd Maste decode(string_int16_data, 3 + 348)); 2835d3e7166SEd Maste 2845d3e7166SEd Maste assert_minimum_input_size(3, string_int16_data); 2855d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 3 + 348, 2865d3e7166SEd Maste decode(string_int16_data, 3)); 2875d3e7166SEd Maste } 2885d3e7166SEd Maste 2895d3e7166SEd Maste unsigned char string_int32_data[] = {0x7A, 0x00, 0x10, 0x10, 2905d3e7166SEd Maste 0x10 /*, [1052688 bytes] */}; 2915d3e7166SEd Maste static void test_string_int32_decoding(void **_CBOR_UNUSED(_state)) { 2925d3e7166SEd Maste assert_string_mem_eq(string_int32_data + 5, 1052688); 2935d3e7166SEd Maste assert_decoder_result(5 + 1052688, CBOR_DECODER_FINISHED, 2945d3e7166SEd Maste decode(string_int32_data, 5 + 1052688)); 2955d3e7166SEd Maste 2965d3e7166SEd Maste assert_minimum_input_size(5, string_int32_data); 2975d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 5 + 1052688, 2985d3e7166SEd Maste decode(string_int32_data, 5)); 2995d3e7166SEd Maste } 3005d3e7166SEd Maste 3015d3e7166SEd Maste #ifdef EIGHT_BYTE_SIZE_T 3025d3e7166SEd Maste unsigned char string_int64_data[] = { 3035d3e7166SEd Maste 0x7B, 0x00, 0x00, 0x00, 0x01, 3045d3e7166SEd Maste 0x00, 0x00, 0x00, 0x00 /*, [4294967296 bytes] */}; 3055d3e7166SEd Maste static void test_string_int64_decoding(void **_CBOR_UNUSED(_state)) { 3065d3e7166SEd Maste assert_string_mem_eq(string_int64_data + 9, 4294967296); 3075d3e7166SEd Maste assert_decoder_result(9 + 4294967296, CBOR_DECODER_FINISHED, 3085d3e7166SEd Maste decode(string_int64_data, 9 + 4294967296)); 3095d3e7166SEd Maste 3105d3e7166SEd Maste assert_minimum_input_size(9, string_int64_data); 3115d3e7166SEd Maste assert_decoder_result_nedata(/* expected_bytes_required= */ 9 + 4294967296, 3125d3e7166SEd Maste decode(string_int64_data, 9)); 3135d3e7166SEd Maste } 3145d3e7166SEd Maste #endif 3155d3e7166SEd Maste 3165d3e7166SEd Maste unsigned char string_indef_1_data[] = {0x7F, 0x60 /* Empty string */, 0xFF}; 3175d3e7166SEd Maste static void test_string_indef_decoding_1(void **_CBOR_UNUSED(_state)) { 3185d3e7166SEd Maste assert_string_indef_start(); 3195d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3205d3e7166SEd Maste decode(string_indef_1_data, 3)); 3215d3e7166SEd Maste 3225d3e7166SEd Maste assert_string_mem_eq(string_indef_1_data + 2, 0); 3235d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3245d3e7166SEd Maste decode(string_indef_1_data + 1, 2)); 3255d3e7166SEd Maste 3265d3e7166SEd Maste assert_indef_break(); 3275d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3285d3e7166SEd Maste decode(string_indef_1_data + 2, 1)); 3295d3e7166SEd Maste } 3305d3e7166SEd Maste 3315d3e7166SEd Maste unsigned char string_indef_2_data[] = {0x7F, 0xFF}; 3325d3e7166SEd Maste static void test_string_indef_decoding_2(void **_CBOR_UNUSED(_state)) { 3335d3e7166SEd Maste assert_string_indef_start(); 3345d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3355d3e7166SEd Maste decode(string_indef_2_data, 2)); 3365d3e7166SEd Maste 3375d3e7166SEd Maste assert_indef_break(); 3385d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3395d3e7166SEd Maste decode(string_indef_2_data + 1, 1)); 3405d3e7166SEd Maste } 3415d3e7166SEd Maste 3425d3e7166SEd Maste unsigned char string_indef_3_data[] = {0x7F, 3435d3e7166SEd Maste // Empty string 3445d3e7166SEd Maste 0x60, 3455d3e7166SEd Maste // 1B, 1 character byte string 3465d3e7166SEd Maste 0x78, 0x01, 0x00, 3475d3e7166SEd Maste // Break 3485d3e7166SEd Maste 0xFF}; 3495d3e7166SEd Maste static void test_string_indef_decoding_3(void **_CBOR_UNUSED(_state)) { 3505d3e7166SEd Maste assert_string_indef_start(); 3515d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3525d3e7166SEd Maste decode(string_indef_3_data, 6)); 3535d3e7166SEd Maste 3545d3e7166SEd Maste assert_string_mem_eq(string_indef_3_data + 2, 0); 3555d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3565d3e7166SEd Maste decode(string_indef_3_data + 1, 5)); 3575d3e7166SEd Maste 3585d3e7166SEd Maste assert_string_mem_eq(string_indef_3_data + 4, 1); 3595d3e7166SEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, 3605d3e7166SEd Maste decode(string_indef_3_data + 2, 4)); 3615d3e7166SEd Maste 3625d3e7166SEd Maste assert_indef_break(); 3635d3e7166SEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 3645d3e7166SEd Maste decode(string_indef_3_data + 5, 1)); 3655d3e7166SEd Maste } 3665d3e7166SEd Maste 36710ff414cSEd Maste unsigned char array_embedded_int8_data[] = {0x80}; 3685d3e7166SEd Maste static void test_array_embedded_int8_decoding(void **_CBOR_UNUSED(_state)) { 36910ff414cSEd Maste assert_array_start(0); 37010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 37110ff414cSEd Maste decode(array_embedded_int8_data, 1)); 37210ff414cSEd Maste } 37310ff414cSEd Maste 37410ff414cSEd Maste unsigned char array_int8_data[] = {0x98, 0x02, 0x00, 0x01}; 3755d3e7166SEd Maste static void test_array_int8_decoding(void **_CBOR_UNUSED(_state)) { 37610ff414cSEd Maste assert_array_start(2); 37710ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(array_int8_data, 4)); 37810ff414cSEd Maste 37910ff414cSEd Maste assert_uint8_eq(0); 38010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 38110ff414cSEd Maste decode(array_int8_data + 2, 2)); 38210ff414cSEd Maste 38310ff414cSEd Maste assert_uint8_eq(1); 38410ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 38510ff414cSEd Maste decode(array_int8_data + 3, 1)); 38610ff414cSEd Maste 38710ff414cSEd Maste assert_minimum_input_size(2, array_int8_data); 38810ff414cSEd Maste } 38910ff414cSEd Maste 39010ff414cSEd Maste unsigned char array_int16_data[] = {0x99, 0x00, 0x02, 0x00, 0x01}; 3915d3e7166SEd Maste static void test_array_int16_decoding(void **_CBOR_UNUSED(_state)) { 39210ff414cSEd Maste assert_array_start(2); 39310ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(array_int16_data, 5)); 39410ff414cSEd Maste 39510ff414cSEd Maste assert_uint8_eq(0); 39610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 39710ff414cSEd Maste decode(array_int16_data + 3, 2)); 39810ff414cSEd Maste 39910ff414cSEd Maste assert_uint8_eq(1); 40010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 40110ff414cSEd Maste decode(array_int16_data + 4, 1)); 40210ff414cSEd Maste 40310ff414cSEd Maste assert_minimum_input_size(3, array_int16_data); 40410ff414cSEd Maste } 40510ff414cSEd Maste 40610ff414cSEd Maste unsigned char array_int32_data[] = {0x9A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01}; 4075d3e7166SEd Maste static void test_array_int32_decoding(void **_CBOR_UNUSED(_state)) { 40810ff414cSEd Maste assert_array_start(2); 40910ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(array_int32_data, 7)); 41010ff414cSEd Maste 41110ff414cSEd Maste assert_uint8_eq(0); 41210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 41310ff414cSEd Maste decode(array_int32_data + 5, 2)); 41410ff414cSEd Maste 41510ff414cSEd Maste assert_uint8_eq(1); 41610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 41710ff414cSEd Maste decode(array_int32_data + 6, 1)); 41810ff414cSEd Maste 41910ff414cSEd Maste assert_minimum_input_size(5, array_int32_data); 42010ff414cSEd Maste } 42110ff414cSEd Maste 42210ff414cSEd Maste unsigned char array_int64_data[] = {0x9B, 0x00, 0x00, 0x00, 0x00, 0x00, 42310ff414cSEd Maste 0x00, 0x00, 0x02, 0x00, 0x01}; 4245d3e7166SEd Maste static void test_array_int64_decoding(void **_CBOR_UNUSED(_state)) { 42510ff414cSEd Maste assert_array_start(2); 42610ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(array_int64_data, 11)); 42710ff414cSEd Maste 42810ff414cSEd Maste assert_uint8_eq(0); 42910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 43010ff414cSEd Maste decode(array_int64_data + 9, 2)); 43110ff414cSEd Maste 43210ff414cSEd Maste assert_uint8_eq(1); 43310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 43410ff414cSEd Maste decode(array_int64_data + 10, 1)); 43510ff414cSEd Maste 43610ff414cSEd Maste assert_minimum_input_size(9, array_int64_data); 43710ff414cSEd Maste } 43810ff414cSEd Maste 43910ff414cSEd Maste unsigned char array_of_arrays_data[] = {0x82, 0x80, 0x80}; 4405d3e7166SEd Maste static void test_array_of_arrays_decoding(void **_CBOR_UNUSED(_state)) { 44110ff414cSEd Maste assert_array_start(2); 44210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 44310ff414cSEd Maste decode(array_of_arrays_data, 3)); 44410ff414cSEd Maste 44510ff414cSEd Maste assert_array_start(0); 44610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 44710ff414cSEd Maste decode(array_of_arrays_data + 1, 2)); 44810ff414cSEd Maste 44910ff414cSEd Maste assert_array_start(0); 45010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 45110ff414cSEd Maste decode(array_of_arrays_data + 2, 1)); 45210ff414cSEd Maste } 45310ff414cSEd Maste 45410ff414cSEd Maste unsigned char indef_array_data_1[] = {0x9F, 0x00, 0x18, 0xFF, 0x9F, 0xFF, 0xFF}; 4555d3e7166SEd Maste static void test_indef_array_decoding_1(void **_CBOR_UNUSED(_state)) { 45610ff414cSEd Maste assert_indef_array_start(); 45710ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 45810ff414cSEd Maste decode(indef_array_data_1, 7)); 45910ff414cSEd Maste 46010ff414cSEd Maste assert_uint8_eq(0); 46110ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 46210ff414cSEd Maste decode(indef_array_data_1 + 1, 6)); 46310ff414cSEd Maste 46410ff414cSEd Maste assert_uint8_eq(255); 46510ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 46610ff414cSEd Maste decode(indef_array_data_1 + 2, 4)); 46710ff414cSEd Maste 46810ff414cSEd Maste assert_indef_array_start(); 46910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 47010ff414cSEd Maste decode(indef_array_data_1 + 4, 3)); 47110ff414cSEd Maste 47210ff414cSEd Maste assert_indef_break(); 47310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 47410ff414cSEd Maste decode(indef_array_data_1 + 5, 2)); 47510ff414cSEd Maste 47610ff414cSEd Maste assert_indef_break(); 47710ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 47810ff414cSEd Maste decode(indef_array_data_1 + 6, 1)); 47910ff414cSEd Maste } 48010ff414cSEd Maste 48110ff414cSEd Maste unsigned char map_embedded_int8_data[] = {0xa1, 0x01, 0x00}; 4825d3e7166SEd Maste static void test_map_embedded_int8_decoding(void **_CBOR_UNUSED(_state)) { 48310ff414cSEd Maste assert_map_start(1); 48410ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 48510ff414cSEd Maste decode(map_embedded_int8_data, 3)); 48610ff414cSEd Maste 48710ff414cSEd Maste assert_uint8_eq(1); 48810ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 48910ff414cSEd Maste decode(map_embedded_int8_data + 1, 2)); 49010ff414cSEd Maste 49110ff414cSEd Maste assert_uint8_eq(0); 49210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 49310ff414cSEd Maste decode(map_embedded_int8_data + 2, 1)); 49410ff414cSEd Maste } 49510ff414cSEd Maste 49610ff414cSEd Maste unsigned char map_int8_data[] = {0xB8, 0x01, 0x00, 0x01}; 4975d3e7166SEd Maste static void test_map_int8_decoding(void **_CBOR_UNUSED(_state)) { 49810ff414cSEd Maste assert_map_start(1); 49910ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(map_int8_data, 4)); 50010ff414cSEd Maste 50110ff414cSEd Maste assert_uint8_eq(0); 50210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(map_int8_data + 2, 2)); 50310ff414cSEd Maste 50410ff414cSEd Maste assert_uint8_eq(1); 50510ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(map_int8_data + 3, 1)); 50610ff414cSEd Maste 50710ff414cSEd Maste assert_minimum_input_size(2, map_int8_data); 50810ff414cSEd Maste } 50910ff414cSEd Maste 51010ff414cSEd Maste unsigned char map_int16_data[] = {0xB9, 0x00, 0x01, 0x00, 0x01}; 5115d3e7166SEd Maste static void test_map_int16_decoding(void **_CBOR_UNUSED(_state)) { 51210ff414cSEd Maste assert_map_start(1); 51310ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(map_int16_data, 5)); 51410ff414cSEd Maste 51510ff414cSEd Maste assert_uint8_eq(0); 51610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 51710ff414cSEd Maste decode(map_int16_data + 3, 2)); 51810ff414cSEd Maste 51910ff414cSEd Maste assert_uint8_eq(1); 52010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 52110ff414cSEd Maste decode(map_int16_data + 4, 1)); 52210ff414cSEd Maste 52310ff414cSEd Maste assert_minimum_input_size(3, map_int16_data); 52410ff414cSEd Maste } 52510ff414cSEd Maste 52610ff414cSEd Maste unsigned char map_int32_data[] = {0xBA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01}; 5275d3e7166SEd Maste static void test_map_int32_decoding(void **_CBOR_UNUSED(_state)) { 52810ff414cSEd Maste assert_map_start(1); 52910ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(map_int32_data, 7)); 53010ff414cSEd Maste 53110ff414cSEd Maste assert_uint8_eq(0); 53210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 53310ff414cSEd Maste decode(map_int32_data + 5, 2)); 53410ff414cSEd Maste 53510ff414cSEd Maste assert_uint8_eq(1); 53610ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 53710ff414cSEd Maste decode(map_int32_data + 6, 1)); 53810ff414cSEd Maste 53910ff414cSEd Maste assert_minimum_input_size(5, map_int32_data); 54010ff414cSEd Maste } 54110ff414cSEd Maste 54210ff414cSEd Maste unsigned char map_int64_data[] = {0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 54310ff414cSEd Maste 0x00, 0x00, 0x01, 0x00, 0x01}; 5445d3e7166SEd Maste static void test_map_int64_decoding(void **_CBOR_UNUSED(_state)) { 54510ff414cSEd Maste assert_map_start(1); 54610ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(map_int64_data, 11)); 54710ff414cSEd Maste 54810ff414cSEd Maste assert_uint8_eq(0); 54910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 55010ff414cSEd Maste decode(map_int64_data + 9, 2)); 55110ff414cSEd Maste 55210ff414cSEd Maste assert_uint8_eq(1); 55310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 55410ff414cSEd Maste decode(map_int64_data + 10, 1)); 55510ff414cSEd Maste 55610ff414cSEd Maste assert_minimum_input_size(9, map_int64_data); 55710ff414cSEd Maste } 55810ff414cSEd Maste 55910ff414cSEd Maste unsigned char indef_map_data_1[] = {0xBF, 0x00, 0x18, 0xFF, 0xFF}; 5605d3e7166SEd Maste static void test_indef_map_decoding_1(void **_CBOR_UNUSED(_state)) { 56110ff414cSEd Maste assert_indef_map_start(); 56210ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(indef_map_data_1, 5)); 56310ff414cSEd Maste 56410ff414cSEd Maste assert_uint8_eq(0); 56510ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 56610ff414cSEd Maste decode(indef_map_data_1 + 1, 4)); 56710ff414cSEd Maste 56810ff414cSEd Maste assert_uint8_eq(255); 56910ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, 57010ff414cSEd Maste decode(indef_map_data_1 + 2, 3)); 57110ff414cSEd Maste 57210ff414cSEd Maste assert_indef_break(); 57310ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, 57410ff414cSEd Maste decode(indef_map_data_1 + 4, 1)); 57510ff414cSEd Maste } 57610ff414cSEd Maste 57710ff414cSEd Maste unsigned char embedded_tag_data[] = {0xC1}; 5785d3e7166SEd Maste static void test_embedded_tag_decoding(void **_CBOR_UNUSED(_state)) { 57910ff414cSEd Maste assert_tag_eq(1); 58010ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(embedded_tag_data, 1)); 58110ff414cSEd Maste } 58210ff414cSEd Maste 58310ff414cSEd Maste unsigned char int8_tag_data[] = {0xD8, 0xFE}; 5845d3e7166SEd Maste static void test_int8_tag_decoding(void **_CBOR_UNUSED(_state)) { 58510ff414cSEd Maste assert_tag_eq(254); 58610ff414cSEd Maste assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(int8_tag_data, 2)); 58710ff414cSEd Maste 58810ff414cSEd Maste assert_minimum_input_size(2, int8_tag_data); 58910ff414cSEd Maste } 59010ff414cSEd Maste 59110ff414cSEd Maste unsigned char int16_tag_data[] = {0xD9, 0xFE, 0xFD}; 5925d3e7166SEd Maste static void test_int16_tag_decoding(void **_CBOR_UNUSED(_state)) { 59310ff414cSEd Maste assert_tag_eq(65277); 59410ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(int16_tag_data, 3)); 59510ff414cSEd Maste 59610ff414cSEd Maste assert_minimum_input_size(3, int16_tag_data); 59710ff414cSEd Maste } 59810ff414cSEd Maste 59910ff414cSEd Maste unsigned char int32_tag_data[] = {0xDA, 0xFE, 0xFD, 0xFC, 0xFB}; 6005d3e7166SEd Maste static void test_int32_tag_decoding(void **_CBOR_UNUSED(_state)) { 60110ff414cSEd Maste assert_tag_eq(4278058235ULL); 60210ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(int32_tag_data, 5)); 60310ff414cSEd Maste 60410ff414cSEd Maste assert_minimum_input_size(5, int32_tag_data); 60510ff414cSEd Maste } 60610ff414cSEd Maste 60710ff414cSEd Maste unsigned char int64_tag_data[] = {0xDB, 0xFE, 0xFD, 0xFC, 0xFB, 60810ff414cSEd Maste 0xFA, 0xF9, 0xF8, 0xF7}; 6095d3e7166SEd Maste static void test_int64_tag_decoding(void **_CBOR_UNUSED(_state)) { 61010ff414cSEd Maste assert_tag_eq(18374120213919168759ULL); 61110ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(int64_tag_data, 9)); 61210ff414cSEd Maste 61310ff414cSEd Maste assert_minimum_input_size(9, int64_tag_data); 61410ff414cSEd Maste } 61510ff414cSEd Maste 616*abd87254SEd Maste unsigned char reserved_byte_data[] = {0xDC}; 617*abd87254SEd Maste static void test_reserved_byte_decoding(void **_CBOR_UNUSED(_state)) { 618*abd87254SEd Maste assert_decoder_result(0, CBOR_DECODER_ERROR, decode(reserved_byte_data, 1)); 61910ff414cSEd Maste } 62010ff414cSEd Maste 62110ff414cSEd Maste unsigned char float2_data[] = {0xF9, 0x7B, 0xFF}; 6225d3e7166SEd Maste static void test_float2_decoding(void **_CBOR_UNUSED(_state)) { 62310ff414cSEd Maste assert_half(65504.0f); 62410ff414cSEd Maste assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(float2_data, 3)); 62510ff414cSEd Maste 62610ff414cSEd Maste assert_minimum_input_size(3, float2_data); 62710ff414cSEd Maste } 62810ff414cSEd Maste 62910ff414cSEd Maste unsigned char float4_data[] = {0xFA, 0x47, 0xC3, 0x50, 0x00}; 6305d3e7166SEd Maste static void test_float4_decoding(void **_CBOR_UNUSED(_state)) { 63110ff414cSEd Maste assert_float(100000.0f); 63210ff414cSEd Maste assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(float4_data, 5)); 63310ff414cSEd Maste 63410ff414cSEd Maste assert_minimum_input_size(5, float4_data); 63510ff414cSEd Maste } 63610ff414cSEd Maste 63710ff414cSEd Maste unsigned char float8_data[] = {0xFB, 0xC0, 0x10, 0x66, 0x66, 63810ff414cSEd Maste 0x66, 0x66, 0x66, 0x66}; 6395d3e7166SEd Maste static void test_float8_decoding(void **_CBOR_UNUSED(_state)) { 64010ff414cSEd Maste assert_double(-4.1); 64110ff414cSEd Maste assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(float8_data, 9)); 64210ff414cSEd Maste 64310ff414cSEd Maste assert_minimum_input_size(0, float8_data); 64410ff414cSEd Maste } 64510ff414cSEd Maste 64610ff414cSEd Maste unsigned char false_data[] = {0xF4}; 6475d3e7166SEd Maste static void test_false_decoding(void **_CBOR_UNUSED(_state)) { 64810ff414cSEd Maste assert_bool(false); 64910ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(false_data, 1)); 65010ff414cSEd Maste } 65110ff414cSEd Maste 65210ff414cSEd Maste unsigned char true_data[] = {0xF5}; 6535d3e7166SEd Maste static void test_true_decoding(void **_CBOR_UNUSED(_state)) { 65410ff414cSEd Maste assert_bool(true); 65510ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(true_data, 1)); 65610ff414cSEd Maste } 65710ff414cSEd Maste 65810ff414cSEd Maste unsigned char null_data[] = {0xF6}; 6595d3e7166SEd Maste static void test_null_decoding(void **_CBOR_UNUSED(_state)) { 66010ff414cSEd Maste assert_nil(); 66110ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(null_data, 1)); 66210ff414cSEd Maste } 66310ff414cSEd Maste 66410ff414cSEd Maste unsigned char undef_data[] = {0xF7}; 6655d3e7166SEd Maste static void test_undef_decoding(void **_CBOR_UNUSED(_state)) { 66610ff414cSEd Maste assert_undef(); 66710ff414cSEd Maste assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(undef_data, 1)); 66810ff414cSEd Maste } 66910ff414cSEd Maste 6705d3e7166SEd Maste #define stream_test(f) cmocka_unit_test_teardown(f, clean_up_stream_assertions) 67110ff414cSEd Maste 67210ff414cSEd Maste int main(void) { 67310ff414cSEd Maste const struct CMUnitTest tests[] = { 67410ff414cSEd Maste stream_test(test_no_data), 67510ff414cSEd Maste 67610ff414cSEd Maste stream_test(test_uint8_embedded_decoding), 67710ff414cSEd Maste stream_test(test_uint8_decoding), 67810ff414cSEd Maste stream_test(test_uint16_decoding), 67910ff414cSEd Maste stream_test(test_uint32_decoding), 68010ff414cSEd Maste stream_test(test_uint64_decoding), 68110ff414cSEd Maste 68210ff414cSEd Maste stream_test(test_negint8_embedded_decoding), 68310ff414cSEd Maste stream_test(test_negint8_decoding), 68410ff414cSEd Maste stream_test(test_negint16_decoding), 68510ff414cSEd Maste stream_test(test_negint32_decoding), 68610ff414cSEd Maste stream_test(test_negint64_decoding), 68710ff414cSEd Maste 68810ff414cSEd Maste stream_test(test_bstring_embedded_int8_decoding), 68910ff414cSEd Maste stream_test(test_bstring_int8_decoding), 6905d3e7166SEd Maste stream_test(test_bstring_int8_empty_decoding), 69110ff414cSEd Maste stream_test(test_bstring_int16_decoding), 69210ff414cSEd Maste stream_test(test_bstring_int32_decoding), 69310ff414cSEd Maste #ifdef EIGHT_BYTE_SIZE_T 69410ff414cSEd Maste stream_test(test_bstring_int64_decoding), 69510ff414cSEd Maste #endif 69610ff414cSEd Maste stream_test(test_bstring_indef_decoding_1), 69710ff414cSEd Maste stream_test(test_bstring_indef_decoding_2), 69810ff414cSEd Maste stream_test(test_bstring_indef_decoding_3), 69910ff414cSEd Maste 7005d3e7166SEd Maste stream_test(test_string_embedded_int8_decoding), 7015d3e7166SEd Maste stream_test(test_string_int8_decoding), 7025d3e7166SEd Maste stream_test(test_string_int8_empty_decoding), 7035d3e7166SEd Maste stream_test(test_string_int16_decoding), 7045d3e7166SEd Maste stream_test(test_string_int32_decoding), 7055d3e7166SEd Maste #ifdef EIGHT_BYTE_SIZE_T 7065d3e7166SEd Maste stream_test(test_string_int64_decoding), 7075d3e7166SEd Maste #endif 7085d3e7166SEd Maste stream_test(test_string_indef_decoding_1), 7095d3e7166SEd Maste stream_test(test_string_indef_decoding_2), 7105d3e7166SEd Maste stream_test(test_string_indef_decoding_3), 7115d3e7166SEd Maste 71210ff414cSEd Maste stream_test(test_array_embedded_int8_decoding), 71310ff414cSEd Maste stream_test(test_array_int8_decoding), 71410ff414cSEd Maste stream_test(test_array_int16_decoding), 71510ff414cSEd Maste stream_test(test_array_int32_decoding), 71610ff414cSEd Maste stream_test(test_array_int64_decoding), 71710ff414cSEd Maste stream_test(test_array_of_arrays_decoding), 71810ff414cSEd Maste stream_test(test_indef_array_decoding_1), 71910ff414cSEd Maste 72010ff414cSEd Maste stream_test(test_map_embedded_int8_decoding), 72110ff414cSEd Maste stream_test(test_map_int8_decoding), 72210ff414cSEd Maste stream_test(test_map_int16_decoding), 72310ff414cSEd Maste stream_test(test_map_int32_decoding), 72410ff414cSEd Maste stream_test(test_map_int64_decoding), 72510ff414cSEd Maste stream_test(test_indef_map_decoding_1), 72610ff414cSEd Maste 72710ff414cSEd Maste stream_test(test_embedded_tag_decoding), 72810ff414cSEd Maste stream_test(test_int8_tag_decoding), 72910ff414cSEd Maste stream_test(test_int16_tag_decoding), 73010ff414cSEd Maste stream_test(test_int32_tag_decoding), 73110ff414cSEd Maste stream_test(test_int64_tag_decoding), 732*abd87254SEd Maste stream_test(test_reserved_byte_decoding), 73310ff414cSEd Maste 73410ff414cSEd Maste stream_test(test_float2_decoding), 73510ff414cSEd Maste stream_test(test_float4_decoding), 73610ff414cSEd Maste stream_test(test_float8_decoding), 73710ff414cSEd Maste 73810ff414cSEd Maste stream_test(test_false_decoding), 73910ff414cSEd Maste stream_test(test_true_decoding), 74010ff414cSEd Maste stream_test(test_null_decoding), 74110ff414cSEd Maste stream_test(test_undef_decoding)}; 74210ff414cSEd Maste return cmocka_run_group_tests(tests, NULL, NULL); 74310ff414cSEd Maste } 744