improve ordq
This commit is contained in:
parent
48ab2e60a2
commit
f44ad07116
5 changed files with 50 additions and 43 deletions
|
|
@ -7,7 +7,7 @@
|
|||
#include "unity.h"
|
||||
#include "utils.h"
|
||||
|
||||
static int long_cmp(void* ctx, ordkey_t k1, ordkey_t k2)
|
||||
static int long_cmp(void* ctx, void* k1, void* k2)
|
||||
{
|
||||
if ((long)k1 < (long)k2) {
|
||||
return -1;
|
||||
|
|
@ -31,13 +31,13 @@ static void test_ordq_get(void)
|
|||
TEST_ASSERT_TRUE(rc >= 0);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
ordq_put(&q, mk_ordkey(keys[i]), (void*)NULL);
|
||||
ordq_put(&q, (void*)(long)(keys[i]));
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
it = ordq_get(&q, NULL);
|
||||
|
||||
TEST_ASSERT_TRUE((it != NULL) && (it->key == mk_ordkey(val[i])));
|
||||
TEST_ASSERT_TRUE((it != NULL) && ((int)(long)it->data == val[i]));
|
||||
free(it);
|
||||
}
|
||||
|
||||
|
|
@ -46,8 +46,9 @@ static void test_ordq_get(void)
|
|||
return;
|
||||
}
|
||||
|
||||
static int test_skip(void *ctx, ordq_item_t *data) {
|
||||
int val = (int)(long)data->key;
|
||||
static int test_skip(void* ctx, void* data)
|
||||
{
|
||||
int val = (int)(long)data;
|
||||
|
||||
return (val % 2 != 0);
|
||||
}
|
||||
|
|
@ -65,31 +66,32 @@ static void test_ordq_get_skip(void)
|
|||
TEST_ASSERT_TRUE(rc >= 0);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
ordq_put(&q, mk_ordkey(keys[i]), (void*)NULL);
|
||||
ordq_put(&q, (void*)(long)(keys[i]));
|
||||
}
|
||||
|
||||
j = 0; nc = 0;
|
||||
j = 0;
|
||||
nc = 0;
|
||||
for (i = 0; i < 5; i++) {
|
||||
it = ordq_get(&q, test_skip);
|
||||
|
||||
if ( it == NULL) {
|
||||
if (it == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
nc ++;
|
||||
|
||||
while((j < 8) && (val[j] % 2 != 0)) {
|
||||
j ++;
|
||||
|
||||
nc++;
|
||||
|
||||
while ((j < 8) && (val[j] % 2 != 0)) {
|
||||
j++;
|
||||
}
|
||||
|
||||
TEST_ASSERT_TRUE(it->key == mk_ordkey(val[j]));
|
||||
|
||||
TEST_ASSERT_TRUE((int)(long)it->data == (val[j]));
|
||||
free(it);
|
||||
|
||||
j ++;
|
||||
j++;
|
||||
}
|
||||
|
||||
TEST_ASSERT_TRUE(nc == 5);
|
||||
|
||||
|
||||
ordq_fini(&q);
|
||||
|
||||
return;
|
||||
|
|
@ -108,13 +110,13 @@ static void test_ordq_peek(void)
|
|||
TEST_ASSERT_TRUE(rc >= 0);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
ordq_put(&q, mk_ordkey(keys[i]), (void*)NULL);
|
||||
ordq_put(&q, (void*)(long)(keys[i]));
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
it = ordq_peek(&q, NULL); /* ordq_peek() will not remove item from q */
|
||||
|
||||
TEST_ASSERT_TRUE((it != NULL) && (it->key == mk_ordkey(val[0])));
|
||||
TEST_ASSERT_TRUE((it != NULL) && ((int)(long)it->data == (val[0])));
|
||||
}
|
||||
|
||||
ordq_fini(&q);
|
||||
|
|
@ -122,8 +124,9 @@ static void test_ordq_peek(void)
|
|||
return;
|
||||
}
|
||||
|
||||
static int test_skip2(void *ctx, ordq_item_t *data) {
|
||||
int val = (int)(long)data->key;
|
||||
static int test_skip2(void* ctx, void* data)
|
||||
{
|
||||
int val = (int)(long)data;
|
||||
|
||||
return (val % 3 != 0);
|
||||
}
|
||||
|
|
@ -141,13 +144,14 @@ static void test_ordq_peek_skip(void)
|
|||
TEST_ASSERT_TRUE(rc >= 0);
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
ordq_put(&q, mk_ordkey(keys[i]), (void*)NULL);
|
||||
ordq_put(&q, (void*)(long)(keys[i]));
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
it = ordq_peek(&q, test_skip2); /* ordq_peek() will not remove item from q */
|
||||
it = ordq_peek(
|
||||
&q, test_skip2); /* ordq_peek() will not remove item from q */
|
||||
|
||||
TEST_ASSERT_TRUE((it != NULL) && (it->key == mk_ordkey(val[4])));
|
||||
TEST_ASSERT_TRUE((it != NULL) && ((int)(long)it->data == val[4]));
|
||||
}
|
||||
|
||||
ordq_fini(&q);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue