@@ -113,13 +113,105 @@ FOSSIL_TEST(cpp_test_class_bitwise_lookup) {
113113 ASSUME_NOT_EQUAL_I32 (status, 0 );
114114}
115115
116+ // ** Test fossil::sys::Bitwise::all Function **
117+ FOSSIL_TEST (cpp_test_class_bitwise_all) {
118+ fossil_sys_bitwise_entry_t entries[] = {
119+ {" read" , 0x1 },
120+ {" write" , 0x2 },
121+ {" execute" , 0x4 },
122+ {nullptr , 0 }
123+ };
124+ fossil_sys_bitwise_table_t table = {entries, sizeof (entries) / sizeof (entries[0 ]) - 1 };
125+
126+ uint64_t mask = fossil::sys::Bitwise::all (&table);
127+ ASSUME_ITS_EQUAL_I32 (mask, 0x7 ); // 0x1 | 0x2 | 0x4
128+ }
129+
130+ // ** Test fossil::sys::Bitwise::validate Function **
131+ FOSSIL_TEST (cpp_test_class_bitwise_validate) {
132+ fossil_sys_bitwise_entry_t entries[] = {
133+ {" read" , 0x1 },
134+ {" write" , 0x2 },
135+ {" execute" , 0x4 },
136+ {nullptr , 0 }
137+ };
138+ fossil_sys_bitwise_table_t table = {entries, sizeof (entries) / sizeof (entries[0 ]) - 1 };
139+
140+ // Known good mask
141+ ASSUME_ITS_TRUE (fossil::sys::Bitwise::validate (0x3 , &table));
142+
143+ // Mask with an unknown bit set
144+ ASSUME_ITS_FALSE (fossil::sys::Bitwise::validate (0x8 , &table));
145+ }
146+
147+ // ** Test fossil::sys::Bitwise::name Function **
148+ FOSSIL_TEST (cpp_test_class_bitwise_name) {
149+ fossil_sys_bitwise_entry_t entries[] = {
150+ {" read" , 0x1 },
151+ {" write" , 0x2 },
152+ {" execute" , 0x4 },
153+ {nullptr , 0 }
154+ };
155+ fossil_sys_bitwise_table_t table = {entries, sizeof (entries) / sizeof (entries[0 ]) - 1 };
156+
157+ std::string name = fossil::sys::Bitwise::name (0x1 , &table);
158+ ASSUME_ITS_EQUAL_CSTR (name.c_str (), " read" );
159+
160+ name = fossil::sys::Bitwise::name (0x4 , &table);
161+ ASSUME_ITS_EQUAL_CSTR (name.c_str (), " execute" );
162+
163+ name = fossil::sys::Bitwise::name (0x8 , &table);
164+ ASSUME_ITS_EQUAL_CSTR (name.c_str (), " " );
165+ }
166+
167+ // ** Test fossil::sys::Bitwise::count Function **
168+ FOSSIL_TEST (cpp_test_class_bitwise_count) {
169+ ASSUME_ITS_EQUAL_I32 (fossil::sys::Bitwise::count (0x7 ), 3 );
170+ ASSUME_ITS_EQUAL_I32 (fossil::sys::Bitwise::count (0x0 ), 0 );
171+ ASSUME_ITS_EQUAL_I32 (fossil::sys::Bitwise::count (0xFFFFFFFFFFFFFFFFULL ), 64 );
172+ }
173+
174+ // ** Test fossil::sys::Bitwise::has Function **
175+ FOSSIL_TEST (cpp_test_class_bitwise_has) {
176+ uint64_t mask = 0x5 ; // bits 0 and 2 set
177+ ASSUME_ITS_TRUE (fossil::sys::Bitwise::has (mask, 0x1 ));
178+ ASSUME_ITS_FALSE (fossil::sys::Bitwise::has (mask, 0x2 ));
179+ ASSUME_ITS_TRUE (fossil::sys::Bitwise::has (mask, 0x4 ));
180+ }
181+
182+ // ** Test fossil::sys::Bitwise::format (std::string version) **
183+ FOSSIL_TEST (cpp_test_class_bitwise_format_string) {
184+ fossil_sys_bitwise_entry_t entries[] = {
185+ {" read" , 0x1 },
186+ {" write" , 0x2 },
187+ {" execute" , 0x4 },
188+ {nullptr , 0 }
189+ };
190+ fossil_sys_bitwise_table_t table = {entries, sizeof (entries) / sizeof (entries[0 ]) - 1 };
191+
192+ std::string result = fossil::sys::Bitwise::format (0x3 , &table);
193+ ASSUME_ITS_EQUAL_CSTR (result.c_str (), " read|write" );
194+
195+ result = fossil::sys::Bitwise::format (0x4 , &table);
196+ ASSUME_ITS_EQUAL_CSTR (result.c_str (), " execute" );
197+
198+ result = fossil::sys::Bitwise::format (0x0 , &table);
199+ ASSUME_ITS_EQUAL_CSTR (result.c_str (), " " );
200+ }
201+
116202// * * * * * * * * * * * * * * * * * * * * * * * *
117203// * Fossil Logic Test Pool
118204// * * * * * * * * * * * * * * * * * * * * * * * *
119205FOSSIL_TEST_GROUP (cpp_bitwise_tests) {
120206 FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_parse);
121207 FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_format);
122208 FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_lookup);
209+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_all);
210+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_validate);
211+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_name);
212+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_count);
213+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_has);
214+ FOSSIL_TEST_ADD (cpp_bitwise_suite, cpp_test_class_bitwise_format_string);
123215
124216 FOSSIL_TEST_REGISTER (cpp_bitwise_suite);
125217}
0 commit comments