]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | /* |
2 | * <tested_file_path>src/utils/utils_refcnt.c</tested_file_path> | |
3 | * <tested_function>ocf_refcnt_unfreeze</tested_function> | |
4 | * <functions_to_leave> | |
5 | * ocf_refcnt_init | |
6 | * ocf_refcnt_inc | |
7 | * ocf_refcnt_dec | |
8 | * ocf_refcnt_freeze | |
9 | * </functions_to_leave> | |
10 | */ | |
11 | ||
12 | #undef static | |
13 | ||
14 | #undef inline | |
15 | ||
16 | ||
17 | #include <stdarg.h> | |
18 | #include <stddef.h> | |
19 | #include <setjmp.h> | |
20 | #include <cmocka.h> | |
21 | #include "print_desc.h" | |
22 | ||
23 | #include "../utils/utils_refcnt.h" | |
24 | ||
25 | #include "utils/utils_refcnt.c/utils_refcnt_unfreeze_generated_wraps.c" | |
26 | ||
27 | static void ocf_refcnt_unfreeze_test01(void **state) | |
28 | { | |
29 | struct ocf_refcnt rc; | |
30 | int val, val2; | |
31 | ||
32 | print_test_description("Unfreeze decrements freeze counter"); | |
33 | ||
34 | ocf_refcnt_init(&rc); | |
35 | ||
36 | ocf_refcnt_freeze(&rc); | |
37 | ocf_refcnt_freeze(&rc); | |
38 | val = env_atomic_read(&rc.freeze); | |
39 | ||
40 | ocf_refcnt_unfreeze(&rc); | |
41 | val2 = env_atomic_read(&rc.freeze); | |
42 | assert_int_equal(val2, val - 1); | |
43 | ||
44 | ocf_refcnt_unfreeze(&rc); | |
45 | val2 = env_atomic_read(&rc.freeze); | |
46 | assert_int_equal(val2, val - 2); | |
47 | ||
48 | } | |
49 | ||
50 | static void ocf_refcnt_unfreeze_test02(void **state) | |
51 | { | |
52 | struct ocf_refcnt rc; | |
53 | int val, val2; | |
54 | ||
55 | print_test_description("Unfreezed counter can be incremented"); | |
56 | ||
57 | ocf_refcnt_init(&rc); | |
58 | ||
59 | val = ocf_refcnt_inc(&rc); | |
60 | ocf_refcnt_freeze(&rc); | |
61 | ocf_refcnt_unfreeze(&rc); | |
62 | val2 = ocf_refcnt_inc(&rc); | |
63 | ||
64 | assert_int_equal(val2, val + 1); | |
65 | } | |
66 | ||
67 | static void ocf_refcnt_unfreeze_test03(void **state) | |
68 | { | |
69 | struct ocf_refcnt rc; | |
70 | int val, val2; | |
71 | ||
72 | print_test_description("Two freezes require two unfreezes"); | |
73 | ||
74 | ocf_refcnt_init(&rc); | |
75 | ||
76 | val = ocf_refcnt_inc(&rc); | |
77 | ocf_refcnt_freeze(&rc); | |
78 | ocf_refcnt_freeze(&rc); | |
79 | ocf_refcnt_unfreeze(&rc); | |
80 | val2 = ocf_refcnt_inc(&rc); | |
81 | ||
82 | assert_int_equal(0, val2); | |
83 | ||
84 | ocf_refcnt_unfreeze(&rc); | |
85 | val2 = ocf_refcnt_inc(&rc); | |
86 | ||
87 | assert_int_equal(val2, val + 1); | |
88 | } | |
89 | ||
90 | int main(void) | |
91 | { | |
92 | const struct CMUnitTest tests[] = { | |
93 | cmocka_unit_test(ocf_refcnt_unfreeze_test01), | |
94 | cmocka_unit_test(ocf_refcnt_unfreeze_test02), | |
95 | cmocka_unit_test(ocf_refcnt_unfreeze_test03), | |
96 | }; | |
97 | ||
98 | print_message("Unit test of src/utils/utils_refcnt.c"); | |
99 | ||
100 | return cmocka_run_group_tests(tests, NULL, NULL); | |
101 | } |