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*,*err*");
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 if (silc_errno == SILC_ERR_OVERFLOW)
86 SILC_LOG_DEBUG(("Overflow detected"));
88 SILC_LOG_DEBUG(("Find first set bit"));
89 bit = silc_bit_ffs(bitmap, size);
90 SILC_LOG_DEBUG(("First set bit: %d", bit));
94 SILC_LOG_DEBUG(("Find next set bit"));
95 bit = silc_bit_fns(bitmap, size, bit + 1);
96 SILC_LOG_DEBUG(("Next set bit: %d", bit));
100 SILC_LOG_DEBUG(("Find all set bits"));
103 bit = silc_bit_fns(bitmap, size, bit);
105 SILC_LOG_DEBUG(("Set bit: %d", bit));
110 SILC_LOG_DEBUG(("Find first zero bit"));
111 bit = silc_bit_ffz(bitmap, size);
112 SILC_LOG_DEBUG(("First zero bit: %d", bit));
116 SILC_LOG_DEBUG(("Find next zero bit"));
117 bit = silc_bit_fnz(bitmap, size, bit + 1);
118 SILC_LOG_DEBUG(("Next zero bit: %d", bit));
122 SILC_LOG_DEBUG(("Clear bitmap"));
123 silc_bit_clear_bitmap(bitmap, size);
125 SILC_LOG_DEBUG(("Check for set bits"));
126 bit = silc_bit_ffs(bitmap, size);
129 SILC_LOG_DEBUG(("No set bits"));
134 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
135 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");