Skip to content

Commit 9ff623f

Browse files
committed
Bools and undefs
1 parent fc2564a commit 9ff623f

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/cbor.c

+6
Original file line numberDiff line numberDiff line change
@@ -1435,6 +1435,12 @@ void cbor_set_ctrl(cbor_item_t * item, cbor_ctrl value)
14351435
item->metadata.float_ctrl_metadata.type = value;
14361436
}
14371437

1438+
bool cbor_ctrl_bool(const cbor_item_t * item)
1439+
{
1440+
assert(cbor_is_bool(item));
1441+
return item->metadata.float_ctrl_metadata.type == CBOR_CTRL_TRUE;
1442+
}
1443+
14381444
#ifdef DEBUG
14391445
void cbor_describe(cbor_item_t * item) {
14401446
printf("Address: %p\t\t Type: ", (void *)item);

test/type_7_test.c

+29-1
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,40 @@ static void test_null(void **state) {
5353
assert_null(float_ctrl);
5454
}
5555

56+
unsigned char undef_data[] = { 0xF7 };
57+
static void test_undef(void **state) {
58+
float_ctrl = cbor_load(undef_data, 1, CBOR_FLAGS_NONE, &res);
59+
assert_true(cbor_isa_float_ctrl(float_ctrl));
60+
assert_true(cbor_is_undef(float_ctrl));
61+
cbor_decref(&float_ctrl);
62+
assert_null(float_ctrl);
63+
}
64+
65+
unsigned char bool_data[] = { 0xF4, 0xF5 };
66+
static void test_bool(void **state) {
67+
float_ctrl = cbor_load(bool_data, 1, CBOR_FLAGS_NONE, &res);
68+
assert_true(cbor_isa_float_ctrl(float_ctrl));
69+
assert_true(cbor_is_bool(float_ctrl));
70+
assert_false(cbor_ctrl_bool(float_ctrl));
71+
cbor_decref(&float_ctrl);
72+
assert_null(float_ctrl);
73+
74+
float_ctrl = cbor_load(bool_data + 1, 1, CBOR_FLAGS_NONE, &res);
75+
assert_true(cbor_isa_float_ctrl(float_ctrl));
76+
assert_true(cbor_is_bool(float_ctrl));
77+
assert_true(cbor_ctrl_bool(float_ctrl));
78+
cbor_decref(&float_ctrl);
79+
assert_null(float_ctrl);
80+
}
81+
5682
int main(void) {
5783
const UnitTest tests[] = {
5884
unit_test(test_float2),
5985
unit_test(test_float4),
6086
unit_test(test_float8),
61-
unit_test(test_null)
87+
unit_test(test_null),
88+
unit_test(test_undef),
89+
unit_test(test_bool)
6290
};
6391
return run_tests(tests);
6492
}

0 commit comments

Comments
 (0)