GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_test/test_delegates.c
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 47 47 100.0%
Functions: 9 9 100.0%
Branches: 18 36 50.0%

Line Branch Exec Source
1 #include "test_delegates.h"
2 #include "gate/tests.h"
3
4 #include "gate/delegates.h"
5 #include "gate/runnables.h"
6
7
8 static int volatile delegate_test_value_1;
9 static int volatile delegate_test_value_2;
10
11 static int dummy_object = 12345;
12
13 1 static gate_result_t test_callback_function_1(int value)
14 {
15 1 delegate_test_value_1 = value;
16 1 return GATE_RESULT_OK;
17 }
18
19 1 static gate_result_t test_callback_object_1(void* obj, int value)
20 {
21
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(obj, (void*)&dummy_object);
22 1 delegate_test_value_1 = value;
23 1 return GATE_RESULT_OK;
24 }
25
26 1 static gate_result_t test_callback_function_2(int value1, int value2)
27 {
28 1 delegate_test_value_1 = value1;
29 1 delegate_test_value_2 = value2;
30 1 return GATE_RESULT_OK;
31 }
32
33 1 static gate_result_t test_callback_object_2(void* obj, int value1, int value2)
34 {
35
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(obj, (void*)&dummy_object);
36 1 delegate_test_value_1 = value1;
37 1 delegate_test_value_2 = value2;
38 1 return GATE_RESULT_OK;
39 }
40
41
42 4 GATE_DELEGATE_DECLARE_1(test_delegate_type_1, int);
43 4 GATE_DELEGATE_DECLARE_2(test_delegate_type_2, int, int);
44
45
46
47 1 GATE_TEST_FUNCTION(test_delegates)
48 {
49 gate_delegate_t test_delegate_instance;
50
51 1 GATE_TEST_UNIT_BEGIN(test_delegates);
52
53 1 delegate_test_value_1 = 42;
54 1 GATE_DELEGATE_BIND_FUNC(test_delegate_type_1, &test_delegate_instance, test_callback_function_1);
55
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 42);
56
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_OK(gate_delegate_invoke(&test_delegate_instance, 24));
57
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 24);
58
59 1 delegate_test_value_1 = 42;
60 1 GATE_DELEGATE_BIND_OBJ(test_delegate_type_1, &test_delegate_instance, test_callback_object_1, &dummy_object);
61
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 42);
62
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_OK(gate_delegate_invoke(&test_delegate_instance, 24));
63
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 24);
64
65 1 delegate_test_value_1 = 42;
66 1 delegate_test_value_2 = 43;
67 1 GATE_DELEGATE_BIND_FUNC(test_delegate_type_2, &test_delegate_instance, test_callback_function_2);
68
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 42);
69
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_2, 43);
70
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_OK(gate_delegate_invoke(&test_delegate_instance, 24, 25));
71
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 24);
72
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_2, 25);
73
74 1 delegate_test_value_1 = 42;
75 1 delegate_test_value_2 = 43;
76 1 GATE_DELEGATE_BIND_OBJ(test_delegate_type_2, &test_delegate_instance, test_callback_object_2, &dummy_object);
77
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 42);
78
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_2, 43);
79
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_OK(gate_delegate_invoke(&test_delegate_instance, 24, 25));
80
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_1, 24);
81
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATE_TEST_CHECK_EQUAL(delegate_test_value_2, 25);
82
83 1 GATE_TEST_UNIT_END;
84 }
85
86
87