1 /* Bit operation tests */
5 int main(int argc, char **argv)
7 SilcBool success = FALSE;
8 SILC_BITMAP_DECLARE(bitmap, 500);
9 int size = SILC_BITMAP_SIZE(500), bit;
11 if (argc > 1 && !strcmp(argv[1], "-d")) {
14 silc_log_debug_hexdump(TRUE);
15 silc_log_set_debug_string("*bit*");
18 silc_bit_clear_bitmap(bitmap, size);
20 SILC_LOG_DEBUG(("Setting bit 0"));
21 if (!silc_bit_set(bitmap, size, 0))
23 bit = silc_bit_get(bitmap, size, 0);
24 SILC_LOG_DEBUG(("Get bit 0: %d", bit));
30 SILC_LOG_DEBUG(("Setting bit 100"));
31 if (!silc_bit_set(bitmap, size, 100))
33 bit = silc_bit_get(bitmap, size, 100);
34 SILC_LOG_DEBUG(("Get bit 100: %d", bit));
40 SILC_LOG_DEBUG(("Clear bit 100"));
41 if (!silc_bit_clear(bitmap, size, 100))
43 bit = silc_bit_get(bitmap, size, 100);
44 SILC_LOG_DEBUG(("Get bit 100: %d", bit));
50 SILC_LOG_DEBUG(("Toggle bit 99"));
51 if (!silc_bit_toggle(bitmap, size, 99))
53 bit = silc_bit_get(bitmap, size, 99);
54 SILC_LOG_DEBUG(("Get bit 99: %d", bit));
60 SILC_LOG_DEBUG(("Test and toggle bit 499"));
61 bit = silc_bit_test_and_toggle(bitmap, size, 499);
64 bit = silc_bit_get(bitmap, size, 499);
65 SILC_LOG_DEBUG(("Get bit 499: %d", bit));
71 SILC_LOG_DEBUG(("Test and set bit 10"));
72 bit = silc_bit_test_and_set(bitmap, size, 10);
75 bit = silc_bit_get(bitmap, size, 10);
76 SILC_LOG_DEBUG(("Get bit 10: %d", bit));
82 SILC_LOG_DEBUG(("Test overflow"));
83 if (silc_bit_set(bitmap, size, 1500))
85 SILC_LOG_DEBUG(("Overflow detected"));
87 SILC_LOG_DEBUG(("Find first set bit"));
88 bit = silc_bit_ffs(bitmap, size);
89 SILC_LOG_DEBUG(("First set bit: %d", bit));
93 SILC_LOG_DEBUG(("Find next set bit"));
94 bit = silc_bit_fns(bitmap, size, bit + 1);
95 SILC_LOG_DEBUG(("Next set bit: %d", bit));
99 SILC_LOG_DEBUG(("Find all set bits"));
102 bit = silc_bit_fns(bitmap, size, bit);
104 SILC_LOG_DEBUG(("Set bit: %d", bit));
109 SILC_LOG_DEBUG(("Find first zero bit"));
110 bit = silc_bit_ffz(bitmap, size);
111 SILC_LOG_DEBUG(("First zero bit: %d", bit));
115 SILC_LOG_DEBUG(("Find next zero bit"));
116 bit = silc_bit_fnz(bitmap, size, bit + 1);
117 SILC_LOG_DEBUG(("Next zero bit: %d", bit));
121 SILC_LOG_DEBUG(("Clear bitmap"));
122 silc_bit_clear_bitmap(bitmap, size);
124 SILC_LOG_DEBUG(("Check for set bits"));
125 bit = silc_bit_ffs(bitmap, size);
128 SILC_LOG_DEBUG(("No set bits"));
133 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
134 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");