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
8*5d3e7166SEd Maste #include "assertions.h"
910ff414cSEd Maste
1010ff414cSEd Maste #include "../src/cbor/internal/unicode.h"
1110ff414cSEd Maste struct _cbor_unicode_status status;
1210ff414cSEd Maste
1310ff414cSEd Maste unsigned char missing_bytes_data[] = {0xC4, 0x8C};
1410ff414cSEd Maste
1510ff414cSEd Maste /* Capital accented C */
test_missing_bytes(void ** _CBOR_UNUSED (_state))16*5d3e7166SEd Maste static void test_missing_bytes(void **_CBOR_UNUSED(_state)) {
17*5d3e7166SEd Maste assert_true(_cbor_unicode_codepoint_count(missing_bytes_data, 1, &status) ==
18*5d3e7166SEd Maste 0);
1910ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_BADCP);
20*5d3e7166SEd Maste assert_true(status.location == 1);
21*5d3e7166SEd Maste
22*5d3e7166SEd Maste assert_true(_cbor_unicode_codepoint_count(missing_bytes_data, 2, &status) ==
23*5d3e7166SEd Maste 1);
2410ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_OK);
25*5d3e7166SEd Maste assert_true(status.location == 0);
2610ff414cSEd Maste }
2710ff414cSEd Maste
2810ff414cSEd Maste unsigned char invalid_sequence_data[] = {0x65, 0xC4, 0x00};
2910ff414cSEd Maste
3010ff414cSEd Maste /* e, invalid seq */
test_invalid_sequence(void ** _CBOR_UNUSED (_state))31*5d3e7166SEd Maste static void test_invalid_sequence(void **_CBOR_UNUSED(_state)) {
32*5d3e7166SEd Maste assert_true(
33*5d3e7166SEd Maste _cbor_unicode_codepoint_count(invalid_sequence_data, 3, &status) == 0);
3410ff414cSEd Maste assert_true(status.status == _CBOR_UNICODE_BADCP);
3510ff414cSEd Maste assert_true(status.location == 2);
3610ff414cSEd Maste }
3710ff414cSEd Maste
main(void)3810ff414cSEd Maste int main(void) {
3910ff414cSEd Maste const struct CMUnitTest tests[] = {cmocka_unit_test(test_missing_bytes),
4010ff414cSEd Maste cmocka_unit_test(test_invalid_sequence)};
4110ff414cSEd Maste return cmocka_run_group_tests(tests, NULL, NULL);
4210ff414cSEd Maste }
43