1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
#include <assert.h>
#include <string.h>
#include <stdint.h>
#include "fcitx-utils/objpool.h"
int main()
{
FcitxObjPool* pool = fcitx_obj_pool_new(4);
int id[32];
int32_t *data;
int i;
for (i = 0; i < 32; i++) {
id[i] = fcitx_obj_pool_alloc_id(pool);
assert(id[i] >= 0);
data = (int32_t*)fcitx_obj_pool_get(pool, id[i]);
*data = i;
}
for (i = 0; i < 32; i+=2) {
assert(fcitx_obj_pool_free_id(pool, id[i]));
}
for (i = 0; i < 32; i+=2) {
assert(!fcitx_obj_pool_free_id(pool, id[i]));
}
for (i = 0; i < 32; i+=2) {
id[i] = fcitx_obj_pool_alloc_id(pool);
assert(id[i] >= 0);
data = (int32_t*)fcitx_obj_pool_get(pool, id[i]);
*data = 32 - i;
}
for (i = 0; i < 32; i++) {
data = (int32_t*)fcitx_obj_pool_get(pool, id[i]);
if (i % 2) {
assert(*data == i);
} else {
assert(*data == 32 - i);
}
assert(fcitx_obj_pool_free_id(pool, id[i]));
}
fcitx_obj_pool_free(pool);
return 0;
}
|