static void test_set_remove(CuTest * tc) { struct quicklist *ql = NULL, *q2; int a; ql_set_insert(&ql, (void *)data); ql_set_insert(&ql, (void *)(data + 1)); ql_set_insert(&ql, (void *)(data + 2)); q2 = ql; a = ql_set_remove(&ql, (void *)(data + 1)); CuAssertIntEquals(tc, ql_true, a); CuAssertPtrEquals(tc, q2, ql); CuAssertPtrEquals(tc, (void *)data, ql_get(ql, 0)); CuAssertPtrEquals(tc, (void *)(data + 2), ql_get(ql, 1)); CuAssertIntEquals(tc, 2, ql_length(ql)); a = ql_set_remove(&ql, (void *)(data + 1)); CuAssertIntEquals(tc, ql_false, a); CuAssertPtrEquals(tc, q2, ql); a = ql_set_remove(&ql, (void *)data); CuAssertIntEquals(tc, ql_true, a); a = ql_set_remove(&ql, (void *)(data + 2)); CuAssertIntEquals(tc, ql_true, a); CuAssertPtrEquals(tc, 0, ql); ql_free(ql); }
static void test_set_insert(CuTest * tc) { struct quicklist *ql = NULL; int a, qi; a = ql_set_insert(&ql, (void *)data); CuAssertIntEquals(tc, 1, ql_length(ql)); CuAssertIntEquals(tc, ql_true, a); a = ql_set_insert(&ql, (void *)(data + 1)); CuAssertIntEquals(tc, 2, ql_length(ql)); CuAssertIntEquals(tc, ql_true, a); a = ql_set_insert(&ql, (void *)data); CuAssertIntEquals(tc, 2, ql_length(ql)); CuAssertIntEquals(tc, ql_false, a); a = ql_set_insert(&ql, (void *)(data + 2)); CuAssertIntEquals(tc, ql_true, a); CuAssertIntEquals(tc, 3, ql_length(ql)); CuAssertPtrEquals(tc, (void *)data, ql_get(ql, 0)); CuAssertPtrEquals(tc, (void *)(data + 1), ql_get(ql, 1)); CuAssertPtrEquals(tc, (void *)(data + 2), ql_get(ql, 2)); a = ql_set_find(&ql, &qi, (void *)(data + 3)); CuAssertIntEquals(tc, 0, a); a = ql_set_find(&ql, &qi, (void *)data); CuAssertIntEquals(tc, 1, a); CuAssertPtrEquals(tc, (void *)data, ql_get(ql, qi)); ql_free(ql); }
void ct_register(const curse_type * ct) { unsigned int hash = tolower(ct->cname[0]); quicklist **ctlp = cursetypes + hash; ql_set_insert(ctlp, (void *)ct); }
static void test_set_find(CuTest * tc) { struct quicklist *ql = 0, *q2; int a, qi; q2 = ql; a = ql_set_find(&q2, 0, (void *)data); CuAssertIntEquals(tc, ql_false, a); CuAssertPtrEquals(tc, ql, q2); for (a = 0; a != 32; ++a) { ql_set_insert(&ql, (void *)(data + a)); } q2 = ql; a = ql_set_find(&q2, 0, (void *)(data + 31)); CuAssertIntEquals(tc, ql_true, a); CuAssertPtrEquals(tc, ql, q2); q2 = ql; a = ql_set_find(&ql, &qi, (void *)data); CuAssertIntEquals(tc, ql_true, a); CuAssertIntEquals(tc, 0, qi); CuAssertPtrEquals(tc, ql, q2); q2 = ql; a = ql_set_find(&ql, &qi, (void *)(data + 31)); CuAssertIntEquals(tc, ql_true, a); CuAssertPtrEquals(tc, (void *)(data + 31), ql_get(ql, qi)); CuAssertTrue(tc, ql != q2); ql_free(ql); }
const message_type *mt_register(message_type * type) { unsigned int hash = hashstring(type->name) % MT_MAXHASH; quicklist **qlp = messagetypes + hash; if (ql_set_insert(qlp, type)) { type->key = mt_id(type); } return type; }