Skip to content

Commit 74af930

Browse files
Update test_bitwise.cpp
1 parent 1c8aa9c commit 74af930

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

code/tests/cases/test_bitwise.cpp

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
// * * * * * * * * * * * * * * * * * * * * * * * *
119205
FOSSIL_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

Comments
 (0)