Home | History | Annotate | Line # | Download | only in test
      1 /*
      2  * Copyright (c) 2014-2019 Pavel Kalvoda <me (at) pavelkalvoda.com>
      3  *
      4  * libcbor is free software; you can redistribute it and/or modify
      5  * it under the terms of the MIT license. See LICENSE for details.
      6  */
      7 
      8 #include <setjmp.h>
      9 #include <stdarg.h>
     10 #include <stddef.h>
     11 
     12 #include <cmocka.h>
     13 
     14 #include "assertions.h"
     15 #include "cbor.h"
     16 #include "stream_expectations.h"
     17 
     18 unsigned char embedded_uint8_data[] = {0x00, 0x01, 0x05, 0x17};
     19 static void test_uint8_embedded_decoding(void **state) {
     20   assert_uint8_eq(0);
     21   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     22                         decode(embedded_uint8_data, 1));
     23 
     24   assert_uint8_eq(1);
     25   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     26                         decode(embedded_uint8_data + 1, 1));
     27 
     28   assert_uint8_eq(5);
     29   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     30                         decode(embedded_uint8_data + 2, 1));
     31 
     32   assert_uint8_eq(23);
     33   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     34                         decode(embedded_uint8_data + 3, 1));
     35 }
     36 
     37 unsigned char uint8_data[] = {0x18, 0x83, 0x18, 0xFF};
     38 static void test_uint8_decoding(void **state) {
     39   assert_uint8_eq(0x83);
     40   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(uint8_data, 2));
     41 
     42   assert_uint8_eq(0xFF);
     43   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(uint8_data + 2, 2));
     44 }
     45 
     46 unsigned char uint16_data[] = {0x19, 0x01, 0xf4};
     47 static void test_uint16_decoding(void **state) {
     48   assert_uint16_eq(500);
     49   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(uint16_data, 3));
     50 }
     51 
     52 unsigned char uint32_data[] = {0x1a, 0xa5, 0xf7, 0x02, 0xb3};
     53 static void test_uint32_decoding(void **state) {
     54   assert_uint32_eq((uint32_t)2784428723UL);
     55   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(uint32_data, 5));
     56 }
     57 
     58 unsigned char uint64_data[] = {0x1b, 0xa5, 0xf7, 0x02, 0xb3,
     59                                0xa5, 0xf7, 0x02, 0xb3};
     60 static void test_uint64_decoding(void **state) {
     61   assert_uint64_eq(11959030306112471731ULL);
     62   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(uint64_data, 9));
     63 }
     64 
     65 unsigned char embedded_negint8_data[] = {0x20, 0x21, 0x25, 0x37};
     66 static void test_negint8_embedded_decoding(void **state) {
     67   assert_negint8_eq(0);
     68   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     69                         decode(embedded_negint8_data, 1));
     70 
     71   assert_negint8_eq(1);
     72   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     73                         decode(embedded_negint8_data + 1, 1));
     74 
     75   assert_negint8_eq(5);
     76   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     77                         decode(embedded_negint8_data + 2, 1));
     78 
     79   assert_negint8_eq(23);
     80   assert_decoder_result(1, CBOR_DECODER_FINISHED,
     81                         decode(embedded_negint8_data + 3, 1));
     82 }
     83 
     84 unsigned char negint8_data[] = {0x38, 0x83, 0x38, 0xFF};
     85 static void test_negint8_decoding(void **state) {
     86   assert_negint8_eq(0x83);
     87   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(negint8_data, 2));
     88 
     89   assert_negint8_eq(0xFF);
     90   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(negint8_data + 2, 2));
     91 }
     92 
     93 unsigned char negint16_data[] = {0x39, 0x01, 0xf4};
     94 static void test_negint16_decoding(void **state) {
     95   assert_negint16_eq(500);
     96   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(negint16_data, 3));
     97 }
     98 
     99 unsigned char negint32_data[] = {0x3a, 0xa5, 0xf7, 0x02, 0xb3};
    100 static void test_negint32_decoding(void **state) {
    101   assert_negint32_eq((uint32_t)2784428723UL);
    102   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(negint32_data, 5));
    103 }
    104 
    105 unsigned char negint64_data[] = {0x3b, 0xa5, 0xf7, 0x02, 0xb3,
    106                                  0xa5, 0xf7, 0x02, 0xb3};
    107 static void test_negint64_decoding(void **state) {
    108   assert_negint64_eq(11959030306112471731ULL);
    109   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(negint64_data, 9));
    110 }
    111 
    112 unsigned char bstring_embedded_int8_data[] = {0x41, 0xFF};
    113 static void test_bstring_embedded_int8_decoding(void **state) {
    114   assert_bstring_mem_eq(bstring_embedded_int8_data + 1, 1);
    115   assert_decoder_result(2, CBOR_DECODER_FINISHED,
    116                         decode(bstring_embedded_int8_data, 2));
    117 }
    118 
    119 unsigned char bstring_int8_data[] = {0x58, 0x00};
    120 static void test_bstring_int8_decoding(void **state) {
    121   assert_bstring_mem_eq(bstring_int8_data + 2, 0);
    122   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(bstring_int8_data, 2));
    123 }
    124 
    125 unsigned char bstring_int16_data[] = {0x59, 0x01, 0x5C /*, [348 bytes] */};
    126 static void test_bstring_int16_decoding(void **state) {
    127   assert_bstring_mem_eq(bstring_int16_data + 3, 348);
    128   assert_decoder_result(3 + 348, CBOR_DECODER_FINISHED,
    129                         decode(bstring_int16_data, 3 + 348));
    130 }
    131 
    132 unsigned char bstring_int32_data[] = {0x5A, 0x00, 0x10, 0x10,
    133                                       0x10 /*, [1052688 bytes] */};
    134 static void test_bstring_int32_decoding(void **state) {
    135   assert_bstring_mem_eq(bstring_int32_data + 5, 1052688);
    136   assert_decoder_result(5 + 1052688, CBOR_DECODER_FINISHED,
    137                         decode(bstring_int32_data, 5 + 1052688));
    138 }
    139 
    140 #ifdef EIGHT_BYTE_SIZE_T
    141 unsigned char bstring_int64_data[] = {
    142     0x5B, 0x00, 0x00, 0x00, 0x01,
    143     0x00, 0x00, 0x00, 0x00 /*, [4294967296 bytes] */};
    144 static void test_bstring_int64_decoding(void **state) {
    145   assert_bstring_mem_eq(bstring_int64_data + 9, 4294967296);
    146   assert_decoder_result(9 + 4294967296, CBOR_DECODER_FINISHED,
    147                         decode(bstring_int64_data, 9 + 4294967296));
    148 }
    149 #endif
    150 
    151 unsigned char bstring_indef_1_data[] = {0x5F, 0x40 /* Empty byte string */,
    152                                         0xFF};
    153 static void test_bstring_indef_decoding_1(void **state) {
    154   assert_bstring_indef_start();
    155   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    156                         decode(bstring_indef_1_data, 3));
    157 
    158   assert_bstring_mem_eq(bstring_indef_1_data + 2, 0);
    159   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    160                         decode(bstring_indef_1_data + 1, 2));
    161 
    162   assert_indef_break();
    163   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    164                         decode(bstring_indef_1_data + 2, 1));
    165 }
    166 
    167 unsigned char bstring_indef_2_data[] = {0x5F, 0xFF};
    168 static void test_bstring_indef_decoding_2(void **state) {
    169   assert_bstring_indef_start();
    170   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    171                         decode(bstring_indef_2_data, 2));
    172 
    173   assert_indef_break();
    174   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    175                         decode(bstring_indef_2_data + 1, 1));
    176 }
    177 
    178 unsigned char bstring_indef_3_data[] = {
    179     0x5F, 0x40 /* Empty byte string */,      0x58,
    180     0x01, 0xFF /* 1B 1 char bytes string */, 0xFF};
    181 static void test_bstring_indef_decoding_3(void **state) {
    182   assert_bstring_indef_start();
    183   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    184                         decode(bstring_indef_3_data, 6));
    185 
    186   assert_bstring_mem_eq(bstring_indef_3_data + 2, 0);
    187   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    188                         decode(bstring_indef_3_data + 1, 5));
    189 
    190   assert_bstring_mem_eq(bstring_indef_3_data + 4, 1);
    191   assert_decoder_result(3, CBOR_DECODER_FINISHED,
    192                         decode(bstring_indef_3_data + 2, 4));
    193 
    194   assert_indef_break();
    195   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    196                         decode(bstring_indef_3_data + 5, 1));
    197 }
    198 
    199 unsigned char array_embedded_int8_data[] = {0x80};
    200 static void test_array_embedded_int8_decoding(void **state) {
    201   assert_array_start(0);
    202   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    203                         decode(array_embedded_int8_data, 1));
    204 }
    205 
    206 unsigned char array_int8_data[] = {0x98, 0x02, 0x00, 0x01};
    207 static void test_array_int8_decoding(void **state) {
    208   assert_array_start(2);
    209   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(array_int8_data, 4));
    210 
    211   assert_uint8_eq(0);
    212   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    213                         decode(array_int8_data + 2, 2));
    214 
    215   assert_uint8_eq(1);
    216   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    217                         decode(array_int8_data + 3, 1));
    218 }
    219 
    220 unsigned char array_int16_data[] = {0x99, 0x00, 0x02, 0x00, 0x01};
    221 static void test_array_int16_decoding(void **state) {
    222   assert_array_start(2);
    223   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(array_int16_data, 5));
    224 
    225   assert_uint8_eq(0);
    226   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    227                         decode(array_int16_data + 3, 2));
    228 
    229   assert_uint8_eq(1);
    230   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    231                         decode(array_int16_data + 4, 1));
    232 }
    233 
    234 unsigned char array_int32_data[] = {0x9A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01};
    235 static void test_array_int32_decoding(void **state) {
    236   assert_array_start(2);
    237   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(array_int32_data, 7));
    238 
    239   assert_uint8_eq(0);
    240   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    241                         decode(array_int32_data + 5, 2));
    242 
    243   assert_uint8_eq(1);
    244   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    245                         decode(array_int32_data + 6, 1));
    246 }
    247 
    248 unsigned char array_int64_data[] = {0x9B, 0x00, 0x00, 0x00, 0x00, 0x00,
    249                                     0x00, 0x00, 0x02, 0x00, 0x01};
    250 static void test_array_int64_decoding(void **state) {
    251   assert_array_start(2);
    252   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(array_int64_data, 11));
    253 
    254   assert_uint8_eq(0);
    255   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    256                         decode(array_int64_data + 9, 2));
    257 
    258   assert_uint8_eq(1);
    259   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    260                         decode(array_int64_data + 10, 1));
    261 }
    262 
    263 unsigned char array_of_arrays_data[] = {0x82, 0x80, 0x80};
    264 static void test_array_of_arrays_decoding(void **state) {
    265   assert_array_start(2);
    266   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    267                         decode(array_of_arrays_data, 3));
    268 
    269   assert_array_start(0);
    270   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    271                         decode(array_of_arrays_data + 1, 2));
    272 
    273   assert_array_start(0);
    274   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    275                         decode(array_of_arrays_data + 2, 1));
    276 }
    277 
    278 unsigned char indef_array_data_1[] = {0x9F, 0x00, 0x18, 0xFF, 0x9F, 0xFF, 0xFF};
    279 static void test_indef_array_decoding_1(void **state) {
    280   assert_indef_array_start();
    281   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    282                         decode(indef_array_data_1, 7));
    283 
    284   assert_uint8_eq(0);
    285   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    286                         decode(indef_array_data_1 + 1, 6));
    287 
    288   assert_uint8_eq(255);
    289   assert_decoder_result(2, CBOR_DECODER_FINISHED,
    290                         decode(indef_array_data_1 + 2, 4));
    291 
    292   assert_indef_array_start();
    293   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    294                         decode(indef_array_data_1 + 4, 3));
    295 
    296   assert_indef_break();
    297   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    298                         decode(indef_array_data_1 + 5, 2));
    299 
    300   assert_indef_break();
    301   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    302                         decode(indef_array_data_1 + 6, 1));
    303 }
    304 
    305 unsigned char map_embedded_int8_data[] = {0xa1, 0x01, 0x00};
    306 static void test_map_embedded_int8_decoding(void **state) {
    307   assert_map_start(1);
    308   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    309                         decode(map_embedded_int8_data, 3));
    310 
    311   assert_uint8_eq(1);
    312   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    313                         decode(map_embedded_int8_data + 1, 2));
    314 
    315   assert_uint8_eq(0);
    316   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    317                         decode(map_embedded_int8_data + 2, 1));
    318 }
    319 
    320 unsigned char map_int8_data[] = {0xB8, 0x01, 0x00, 0x01};
    321 static void test_map_int8_decoding(void **state) {
    322   assert_map_start(1);
    323   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(map_int8_data, 4));
    324 
    325   assert_uint8_eq(0);
    326   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(map_int8_data + 2, 2));
    327 
    328   assert_uint8_eq(1);
    329   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(map_int8_data + 3, 1));
    330 }
    331 
    332 unsigned char map_int16_data[] = {0xB9, 0x00, 0x01, 0x00, 0x01};
    333 static void test_map_int16_decoding(void **state) {
    334   assert_map_start(1);
    335   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(map_int16_data, 5));
    336 
    337   assert_uint8_eq(0);
    338   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    339                         decode(map_int16_data + 3, 2));
    340 
    341   assert_uint8_eq(1);
    342   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    343                         decode(map_int16_data + 4, 1));
    344 }
    345 
    346 unsigned char map_int32_data[] = {0xBA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01};
    347 static void test_map_int32_decoding(void **state) {
    348   assert_map_start(1);
    349   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(map_int32_data, 7));
    350 
    351   assert_uint8_eq(0);
    352   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    353                         decode(map_int32_data + 5, 2));
    354 
    355   assert_uint8_eq(1);
    356   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    357                         decode(map_int32_data + 6, 1));
    358 }
    359 
    360 unsigned char map_int64_data[] = {0xBB, 0x00, 0x00, 0x00, 0x00, 0x00,
    361                                   0x00, 0x00, 0x01, 0x00, 0x01};
    362 static void test_map_int64_decoding(void **state) {
    363   assert_map_start(1);
    364   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(map_int64_data, 11));
    365 
    366   assert_uint8_eq(0);
    367   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    368                         decode(map_int64_data + 9, 2));
    369 
    370   assert_uint8_eq(1);
    371   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    372                         decode(map_int64_data + 10, 1));
    373 }
    374 
    375 unsigned char indef_map_data_1[] = {0xBF, 0x00, 0x18, 0xFF, 0xFF};
    376 static void test_indef_map_decoding_1(void **state) {
    377   assert_indef_map_start();
    378   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(indef_map_data_1, 5));
    379 
    380   assert_uint8_eq(0);
    381   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    382                         decode(indef_map_data_1 + 1, 4));
    383 
    384   assert_uint8_eq(255);
    385   assert_decoder_result(2, CBOR_DECODER_FINISHED,
    386                         decode(indef_map_data_1 + 2, 3));
    387 
    388   assert_indef_break();
    389   assert_decoder_result(1, CBOR_DECODER_FINISHED,
    390                         decode(indef_map_data_1 + 4, 1));
    391 }
    392 
    393 unsigned char map_nedata[] = {0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    394                               0x00, 0x01, 0x19, 0x01, 0xf4, 0x01};
    395 static void test_nedata_map_decoding(void **state) {
    396   assert_decoder_result_nedata(8, decode(map_nedata, 1));
    397 
    398   assert_map_start(1);
    399   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(map_nedata, 9));
    400 
    401   assert_decoder_result_nedata(2, decode(map_nedata + 9, 1));
    402 
    403   assert_uint16_eq(500);
    404   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(map_nedata + 9, 3));
    405 
    406   assert_uint8_eq(1);
    407   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(map_nedata + 12, 1));
    408 }
    409 
    410 unsigned char embedded_tag_data[] = {0xC1};
    411 static void test_embedded_tag_decoding(void **state) {
    412   assert_tag_eq(1);
    413   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(embedded_tag_data, 1));
    414 }
    415 
    416 unsigned char int8_tag_data[] = {0xD8, 0xFE};
    417 static void test_int8_tag_decoding(void **state) {
    418   assert_tag_eq(254);
    419   assert_decoder_result(2, CBOR_DECODER_FINISHED, decode(int8_tag_data, 2));
    420 }
    421 
    422 unsigned char int16_tag_data[] = {0xD9, 0xFE, 0xFD};
    423 static void test_int16_tag_decoding(void **state) {
    424   assert_tag_eq(65277);
    425   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(int16_tag_data, 3));
    426 }
    427 
    428 unsigned char int32_tag_data[] = {0xDA, 0xFE, 0xFD, 0xFC, 0xFB};
    429 static void test_int32_tag_decoding(void **state) {
    430   assert_tag_eq(4278058235ULL);
    431   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(int32_tag_data, 5));
    432 }
    433 
    434 unsigned char int64_tag_data[] = {0xDB, 0xFE, 0xFD, 0xFC, 0xFB,
    435                                   0xFA, 0xF9, 0xF8, 0xF7};
    436 static void test_int64_tag_decoding(void **state) {
    437   assert_tag_eq(18374120213919168759ULL);
    438   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(int64_tag_data, 9));
    439 }
    440 
    441 unsigned char bad_tag_data[] = {0xC6};
    442 static void test_bad_tag_decoding(void **state) {
    443   assert_decoder_result(0, CBOR_DECODER_ERROR, decode(bad_tag_data, 1));
    444 }
    445 
    446 unsigned char float2_data[] = {0xF9, 0x7B, 0xFF};
    447 static void test_float2_decoding(void **state) {
    448   assert_half(65504.0);
    449   assert_decoder_result(3, CBOR_DECODER_FINISHED, decode(float2_data, 3));
    450 }
    451 
    452 unsigned char float4_data[] = {0xFA, 0x47, 0xC3, 0x50, 0x00};
    453 static void test_float4_decoding(void **state) {
    454   assert_float(100000.0);
    455   assert_decoder_result(5, CBOR_DECODER_FINISHED, decode(float4_data, 5));
    456 }
    457 
    458 unsigned char float8_data[] = {0xFB, 0xC0, 0x10, 0x66, 0x66,
    459                                0x66, 0x66, 0x66, 0x66};
    460 static void test_float8_decoding(void **state) {
    461   assert_double(-4.1);
    462   assert_decoder_result(9, CBOR_DECODER_FINISHED, decode(float8_data, 9));
    463 }
    464 
    465 unsigned char false_data[] = {0xF4};
    466 static void test_false_decoding(void **state) {
    467   assert_bool(false);
    468   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(false_data, 1));
    469 }
    470 
    471 unsigned char true_data[] = {0xF5};
    472 static void test_true_decoding(void **state) {
    473   assert_bool(true);
    474   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(true_data, 1));
    475 }
    476 
    477 unsigned char null_data[] = {0xF6};
    478 static void test_null_decoding(void **state) {
    479   assert_nil();
    480   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(null_data, 1));
    481 }
    482 
    483 unsigned char undef_data[] = {0xF7};
    484 static void test_undef_decoding(void **state) {
    485   assert_undef();
    486   assert_decoder_result(1, CBOR_DECODER_FINISHED, decode(undef_data, 1));
    487 }
    488 
    489 int main(void) {
    490   set_decoder(&cbor_stream_decode);
    491   const struct CMUnitTest tests[] = {
    492       cmocka_unit_test(test_uint8_embedded_decoding),
    493       cmocka_unit_test(test_uint8_decoding),
    494       cmocka_unit_test(test_uint16_decoding),
    495       cmocka_unit_test(test_uint32_decoding),
    496       cmocka_unit_test(test_uint64_decoding),
    497 
    498       cmocka_unit_test(test_negint8_embedded_decoding),
    499       cmocka_unit_test(test_negint8_decoding),
    500       cmocka_unit_test(test_negint16_decoding),
    501       cmocka_unit_test(test_negint32_decoding),
    502       cmocka_unit_test(test_negint64_decoding),
    503 
    504       cmocka_unit_test(test_bstring_embedded_int8_decoding),
    505       cmocka_unit_test(test_bstring_int8_decoding),
    506       cmocka_unit_test(test_bstring_int16_decoding),
    507       cmocka_unit_test(test_bstring_int32_decoding),
    508 #ifdef EIGHT_BYTE_SIZE_T
    509       cmocka_unit_test(test_bstring_int64_decoding),
    510 #endif
    511       cmocka_unit_test(test_bstring_indef_decoding_1),
    512       cmocka_unit_test(test_bstring_indef_decoding_2),
    513       cmocka_unit_test(test_bstring_indef_decoding_3),
    514 
    515       cmocka_unit_test(test_array_embedded_int8_decoding),
    516       cmocka_unit_test(test_array_int8_decoding),
    517       cmocka_unit_test(test_array_int16_decoding),
    518       cmocka_unit_test(test_array_int32_decoding),
    519       cmocka_unit_test(test_array_int64_decoding),
    520       cmocka_unit_test(test_array_of_arrays_decoding),
    521       cmocka_unit_test(test_indef_array_decoding_1),
    522 
    523       cmocka_unit_test(test_map_embedded_int8_decoding),
    524       cmocka_unit_test(test_map_int8_decoding),
    525       cmocka_unit_test(test_map_int16_decoding),
    526       cmocka_unit_test(test_map_int32_decoding),
    527       cmocka_unit_test(test_map_int64_decoding),
    528       cmocka_unit_test(test_indef_map_decoding_1),
    529       cmocka_unit_test(test_nedata_map_decoding),
    530 
    531       cmocka_unit_test(test_embedded_tag_decoding),
    532       cmocka_unit_test(test_int8_tag_decoding),
    533       cmocka_unit_test(test_int16_tag_decoding),
    534       cmocka_unit_test(test_int32_tag_decoding),
    535       cmocka_unit_test(test_int64_tag_decoding),
    536       cmocka_unit_test(test_bad_tag_decoding),
    537 
    538       cmocka_unit_test(test_float2_decoding),
    539       cmocka_unit_test(test_float4_decoding),
    540       cmocka_unit_test(test_float8_decoding),
    541 
    542       cmocka_unit_test(test_false_decoding),
    543       cmocka_unit_test(test_true_decoding),
    544       cmocka_unit_test(test_null_decoding),
    545       cmocka_unit_test(test_undef_decoding)};
    546   return cmocka_run_group_tests(tests, NULL, NULL);
    547 }
    548