| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "gate/tests.h" | ||
| 2 | #include "test_wrappers.h" | ||
| 3 | |||
| 4 | #include "gate/wrappers.h" | ||
| 5 | #include "gate/typeids.h" | ||
| 6 | #include "gate/debugging.h" | ||
| 7 | |||
| 8 | static gate_bool_t bv = true; | ||
| 9 | static gate_int8_t i8v = 123; | ||
| 10 | static gate_int16_t i16v = 123; | ||
| 11 | static gate_int32_t i32v = 123; | ||
| 12 | static gate_int64_t i64v = 123; | ||
| 13 | static gate_uint8_t ui8v = 123; | ||
| 14 | static gate_uint16_t ui16v = 123; | ||
| 15 | static gate_uint32_t ui32v = 123; | ||
| 16 | static gate_uint64_t ui64v = 123; | ||
| 17 | static gate_real32_t r32v = 123.456f; | ||
| 18 | static gate_real64_t r64v = 123.456; | ||
| 19 | static gate_string_t strv = GATE_STRING_INIT_EMPTY; | ||
| 20 | |||
| 21 | struct test_item | ||
| 22 | { | ||
| 23 | void* ptr; | ||
| 24 | gate_type_id_t tid; | ||
| 25 | }; | ||
| 26 | |||
| 27 | static struct test_item test_items[] = { | ||
| 28 | { &bv, GATE_TYPE_BOOL }, | ||
| 29 | { &i8v, GATE_TYPE_I8 }, | ||
| 30 | { &i16v, GATE_TYPE_I16 }, | ||
| 31 | { &i32v, GATE_TYPE_I32 }, | ||
| 32 | { &i64v, GATE_TYPE_I64 }, | ||
| 33 | { &ui8v, GATE_TYPE_UI8 }, | ||
| 34 | { &ui16v, GATE_TYPE_UI16 }, | ||
| 35 | { &ui32v, GATE_TYPE_UI32 }, | ||
| 36 | { &ui64v, GATE_TYPE_UI64 }, | ||
| 37 | { &r32v, GATE_TYPE_R32 }, | ||
| 38 | { &r64v, GATE_TYPE_R64 }, | ||
| 39 | { &strv, GATE_TYPE_STRING } | ||
| 40 | }; | ||
| 41 | static gate_size_t test_items_count = sizeof(test_items) / sizeof(test_items[0]); | ||
| 42 | |||
| 43 | static gate_wrapper_type_info_t infos[sizeof(test_items) / sizeof(test_items[0])]; | ||
| 44 | |||
| 45 | 1 | static gate_bool_t init_wrapper_types() | |
| 46 | { | ||
| 47 | gate_size_t ndx; | ||
| 48 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 times.
|
13 | for (ndx = 0; ndx != test_items_count; ++ndx) |
| 49 | { | ||
| 50 | 12 | gate_wrapper_type_info_init(&infos[ndx], test_items[ndx].tid); | |
| 51 | } | ||
| 52 | 1 | return true; | |
| 53 | } | ||
| 54 | |||
| 55 | 1 | static gate_bool_t check_variant_contents(gate_variant_t* v) | |
| 56 | { | ||
| 57 | gate_size_t ndx; | ||
| 58 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 times.
|
13 | for (ndx = 0; ndx != test_items_count; ++ndx) |
| 59 | { | ||
| 60 | 12 | void* ptr_orig = test_items[ndx].ptr; | |
| 61 | 12 | gate_type_id_t tid = test_items[ndx].tid; | |
| 62 | 12 | gate_size_t length = gate_type_length(tid); | |
| 63 | 12 | void const* signature = gate_type_signature(tid); | |
| 64 | |||
| 65 | 12 | void* ptr_var = NULL; | |
| 66 | |||
| 67 |
1/2✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
|
12 | GATE_TEST_CHECK_OK(gate_variant_set_content(v, ptr_orig, length, signature)); |
| 68 | |||
| 69 | 12 | ptr_var = gate_variant_get_content(v); | |
| 70 |
1/2✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
|
12 | GATE_TEST_CHECK(ptr_var != NULL); |
| 71 |
1/2✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
|
12 | GATE_TEST_CHECK_EQUAL(gate_variant_get_size(v), length); |
| 72 |
1/2✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
|
12 | GATE_TEST_CHECK_EQUAL(gate_variant_get_type(v), signature); |
| 73 | } | ||
| 74 | 1 | return true; | |
| 75 | } | ||
| 76 | |||
| 77 | |||
| 78 | 1 | GATE_TEST_FUNCTION(test_wrappers) | |
| 79 | { | ||
| 80 | 1 | GATE_TEST_UNIT_BEGIN(test_wrappers); | |
| 81 | |||
| 82 | { | ||
| 83 | 1 | gate_variant_t* v = NULL; | |
| 84 | |||
| 85 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | GATE_TEST_CHECK(init_wrapper_types()); |
| 86 | |||
| 87 | 1 | v = gate_variant_create(infos, sizeof(infos) / sizeof(infos[0])); | |
| 88 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | GATE_TEST_REQUIRE(v != NULL); |
| 89 | |||
| 90 | 1 | gate_object_retain(v); | |
| 91 | 1 | gate_object_release(v); | |
| 92 | |||
| 93 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | GATE_TEST_CHECK(check_variant_contents(v)); |
| 94 | |||
| 95 | 1 | gate_object_release(v); | |
| 96 | } | ||
| 97 | |||
| 98 | 1 | GATE_TEST_UNIT_END; | |
| 99 | } | ||
| 100 |