Skip to content

Commit 1c8aa9c

Browse files
Update test_bitwise.c
1 parent a7bf435 commit 1c8aa9c

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

code/tests/cases/test_bitwise.c

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,95 @@ FOSSIL_TEST(c_test_bitwise_lookup) {
110110
ASSUME_ITS_EQUAL_I32(bit, 0x4);
111111
}
112112

113+
// ** Test fossil_sys_bitwise_all Function **
114+
FOSSIL_TEST(c_test_bitwise_all) {
115+
fossil_sys_bitwise_entry_t entries[] = {
116+
{"read", 0x1},
117+
{"write", 0x2},
118+
{"execute", 0x4},
119+
{NULL, 0}
120+
};
121+
const fossil_sys_bitwise_table_t table = {entries, sizeof(entries) / sizeof(entries[0]) - 1};
122+
123+
uint64_t mask = fossil_sys_bitwise_all(&table);
124+
ASSUME_ITS_EQUAL_I32(mask, 0x7); // 0x1 | 0x2 | 0x4
125+
}
126+
127+
// ** Test fossil_sys_bitwise_validate Function **
128+
FOSSIL_TEST(c_test_bitwise_validate) {
129+
fossil_sys_bitwise_entry_t entries[] = {
130+
{"read", 0x1},
131+
{"write", 0x2},
132+
{"execute", 0x4},
133+
{NULL, 0}
134+
};
135+
const fossil_sys_bitwise_table_t table = {entries, sizeof(entries) / sizeof(entries[0]) - 1};
136+
137+
// Known good mask
138+
int status = fossil_sys_bitwise_validate(0x3, &table);
139+
ASSUME_ITS_EQUAL_I32(status, 0);
140+
141+
// Mask with an unknown bit set (0x8)
142+
status = fossil_sys_bitwise_validate(0x8, &table);
143+
ASSUME_ITS_NOTEQUAL_I32(status, 0); // Expect failure
144+
}
145+
146+
// ** Test fossil_sys_bitwise_name Function **
147+
FOSSIL_TEST(c_test_bitwise_name) {
148+
fossil_sys_bitwise_entry_t entries[] = {
149+
{"read", 0x1},
150+
{"write", 0x2},
151+
{"execute", 0x4},
152+
{NULL, 0}
153+
};
154+
const fossil_sys_bitwise_table_t table = {entries, sizeof(entries) / sizeof(entries[0]) - 1};
155+
156+
const char *name = fossil_sys_bitwise_name(0x1, &table);
157+
ASSUME_ITS_EQUAL_CSTR(name, "read");
158+
159+
name = fossil_sys_bitwise_name(0x4, &table);
160+
ASSUME_ITS_EQUAL_CSTR(name, "execute");
161+
162+
name = fossil_sys_bitwise_name(0x8, &table);
163+
ASSUME_ITS_NULL(name); // 0x8 is not in the table
164+
}
165+
166+
// ** Test fossil_sys_bitwise_count Function **
167+
FOSSIL_TEST(c_test_bitwise_count) {
168+
uint64_t mask = 0x7; // 3 bits set
169+
size_t count = fossil_sys_bitwise_count(mask);
170+
ASSUME_ITS_EQUAL_I32(count, 3);
171+
172+
mask = 0x0;
173+
count = fossil_sys_bitwise_count(mask);
174+
ASSUME_ITS_EQUAL_I32(count, 0);
175+
176+
mask = 0xFFFFFFFFFFFFFFFFULL;
177+
count = fossil_sys_bitwise_count(mask);
178+
ASSUME_ITS_EQUAL_I32(count, 64);
179+
}
180+
181+
// ** Test fossil_sys_bitwise_has Function **
182+
FOSSIL_TEST(c_test_bitwise_has) {
183+
uint64_t mask = 0x5; // bits 0 and 2 set
184+
185+
ASSUME_ITS_TRUE(fossil_sys_bitwise_has(mask, 0x1)); // bit 0 set
186+
ASSUME_ITS_FALSE(fossil_sys_bitwise_has(mask, 0x2)); // bit 1 NOT set
187+
ASSUME_ITS_TRUE(fossil_sys_bitwise_has(mask, 0x4)); // bit 2 set
188+
}
189+
113190
// * * * * * * * * * * * * * * * * * * * * * * * *
114191
// * Fossil Logic Test Pool
115192
// * * * * * * * * * * * * * * * * * * * * * * * *
116193
FOSSIL_TEST_GROUP(c_bitwise_tests) {
117194
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_parse);
118195
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_format);
119196
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_lookup);
197+
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_all);
198+
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_validate);
199+
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_name);
200+
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_count);
201+
FOSSIL_TEST_ADD(c_bitwise_suite, c_test_bitwise_has);
120202

121203
FOSSIL_TEST_REGISTER(c_bitwise_suite);
122204
}

0 commit comments

Comments
 (0)