1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include <fwk_assert.h>
9 #include <fwk_id.h>
10 #include <fwk_macros.h>
11 #include <fwk_test.h>
12 
test_equal_module_id(void)13 static void test_equal_module_id(void)
14 {
15     fwk_id_t left = FWK_ID_MODULE(42);
16     fwk_id_t right = FWK_ID_MODULE(42);
17 
18     assert(fwk_id_is_equal(left, right));
19 }
20 
test_not_equal_module_id(void)21 static void test_not_equal_module_id(void)
22 {
23     fwk_id_t left = FWK_ID_MODULE(42);
24     fwk_id_t right = FWK_ID_MODULE(58);
25 
26     assert(!fwk_id_is_equal(left, right));
27 }
28 
test_equal_element_id(void)29 static void test_equal_element_id(void)
30 {
31     fwk_id_t left = FWK_ID_ELEMENT(42, 58);
32     fwk_id_t right = FWK_ID_ELEMENT(42, 58);
33 
34     assert(fwk_id_is_equal(left, right));
35 }
36 
test_not_equal_element_id(void)37 static void test_not_equal_element_id(void)
38 {
39     fwk_id_t left = FWK_ID_ELEMENT(42, 58);
40     fwk_id_t right = FWK_ID_ELEMENT(58, 42);
41 
42     assert(!fwk_id_is_equal(left, right));
43 }
44 
test_equal_api_id(void)45 static void test_equal_api_id(void)
46 {
47     fwk_id_t left = FWK_ID_API(42, 14);
48     fwk_id_t right = FWK_ID_API(42, 14);
49 
50     assert(fwk_id_is_equal(left, right));
51 }
52 
test_not_equal_api_id(void)53 static void test_not_equal_api_id(void)
54 {
55     fwk_id_t left = FWK_ID_API(4, 8);
56     fwk_id_t right = FWK_ID_API(8, 4);
57 
58     assert(!fwk_id_is_equal(left, right));
59 }
60 
test_equal_event_id(void)61 static void test_equal_event_id(void)
62 {
63     fwk_id_t left = FWK_ID_EVENT(42, 45);
64     fwk_id_t right = FWK_ID_EVENT(42, 45);
65 
66     assert(fwk_id_is_equal(left, right));
67 }
68 
test_not_equal_event_id(void)69 static void test_not_equal_event_id(void)
70 {
71     fwk_id_t left = FWK_ID_EVENT(42, 58);
72     fwk_id_t right = FWK_ID_EVENT(58, 42);
73 
74     assert(!fwk_id_is_equal(left, right));
75 }
76 
test_equal_notification_id(void)77 static void test_equal_notification_id(void)
78 {
79     fwk_id_t left = FWK_ID_NOTIFICATION(42, 45);
80     fwk_id_t right = FWK_ID_NOTIFICATION(42, 45);
81 
82     assert(fwk_id_is_equal(left, right));
83 }
84 
test_not_equal_notification_id(void)85 static void test_not_equal_notification_id(void)
86 {
87     fwk_id_t left = FWK_ID_NOTIFICATION(42, 58);
88     fwk_id_t right = FWK_ID_NOTIFICATION(58, 42);
89 
90     assert(!fwk_id_is_equal(left, right));
91 }
92 
test_not_equal_shared_module(void)93 static void test_not_equal_shared_module(void)
94 {
95     fwk_id_t left = FWK_ID_ELEMENT(42, 0);
96     fwk_id_t right = FWK_ID_API(42, 0);
97 
98     assert(!fwk_id_is_equal(left, right));
99 }
100 
test_defined_optional_id(void)101 static void test_defined_optional_id(void)
102 {
103     fwk_optional_id_t opt_id = FWK_ID_NONE_INIT;
104 
105     assert(fwk_optional_id_is_defined(opt_id));
106 }
107 
test_undefined_optional_id(void)108 static void test_undefined_optional_id(void)
109 {
110     fwk_optional_id_t opt_id = (fwk_optional_id_t){ 0 };
111 
112     assert(!fwk_optional_id_is_defined(opt_id));
113 }
114 
115 static const struct fwk_test_case_desc test_case_table[] = {
116     FWK_TEST_CASE(test_equal_module_id),
117     FWK_TEST_CASE(test_not_equal_module_id),
118     FWK_TEST_CASE(test_equal_element_id),
119     FWK_TEST_CASE(test_not_equal_element_id),
120     FWK_TEST_CASE(test_equal_api_id),
121     FWK_TEST_CASE(test_not_equal_api_id),
122     FWK_TEST_CASE(test_equal_event_id),
123     FWK_TEST_CASE(test_not_equal_event_id),
124     FWK_TEST_CASE(test_equal_notification_id),
125     FWK_TEST_CASE(test_not_equal_notification_id),
126     FWK_TEST_CASE(test_not_equal_shared_module),
127     FWK_TEST_CASE(test_defined_optional_id),
128     FWK_TEST_CASE(test_undefined_optional_id),
129 };
130 
131 struct fwk_test_suite_desc test_suite = {
132     .name = "fwk_id_equality",
133     .test_case_count = FWK_ARRAY_SIZE(test_case_table),
134     .test_case_table = test_case_table,
135 };
136