1*10ff414cSEd Maste /* 2*10ff414cSEd Maste * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com> 3*10ff414cSEd Maste * 4*10ff414cSEd Maste * libcbor is free software; you can redistribute it and/or modify 5*10ff414cSEd Maste * it under the terms of the MIT license. See LICENSE for details. 6*10ff414cSEd Maste */ 7*10ff414cSEd Maste 8*10ff414cSEd Maste #include <setjmp.h> 9*10ff414cSEd Maste #include <stdarg.h> 10*10ff414cSEd Maste #include <stddef.h> 11*10ff414cSEd Maste 12*10ff414cSEd Maste #include <cmocka.h> 13*10ff414cSEd Maste 14*10ff414cSEd Maste #include "../src/cbor/internal/unicode.h" 15*10ff414cSEd Maste 16*10ff414cSEd Maste struct _cbor_unicode_status status; 17*10ff414cSEd Maste 18*10ff414cSEd Maste unsigned char missing_bytes_data[] = {0xC4, 0x8C}; 19*10ff414cSEd Maste 20*10ff414cSEd Maste /* Capital accented C */ 21*10ff414cSEd Maste static void test_missing_bytes(void **state) { 22*10ff414cSEd Maste _cbor_unicode_codepoint_count(missing_bytes_data, 1, &status); 23*10ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_BADCP); 24*10ff414cSEd Maste _cbor_unicode_codepoint_count(missing_bytes_data, 2, &status); 25*10ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_OK); 26*10ff414cSEd Maste } 27*10ff414cSEd Maste 28*10ff414cSEd Maste unsigned char invalid_sequence_data[] = {0x65, 0xC4, 0x00}; 29*10ff414cSEd Maste 30*10ff414cSEd Maste /* e, invalid seq */ 31*10ff414cSEd Maste static void test_invalid_sequence(void **state) { 32*10ff414cSEd Maste _cbor_unicode_codepoint_count(invalid_sequence_data, 3, &status); 33*10ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_BADCP); 34*10ff414cSEd Maste assert_true(status.location == 2); 35*10ff414cSEd Maste } 36*10ff414cSEd Maste 37*10ff414cSEd Maste int main(void) { 38*10ff414cSEd Maste const struct CMUnitTest tests[] = {cmocka_unit_test(test_missing_bytes), 39*10ff414cSEd Maste cmocka_unit_test(test_invalid_sequence)}; 40*10ff414cSEd Maste return cmocka_run_group_tests(tests, NULL, NULL); 41*10ff414cSEd Maste } 42