diff options
author | Nicolas Dato <nicolas.dato@gmail.com> | 2024-10-14 00:04:33 -0300 |
---|---|---|
committer | Nicolas Dato <nicolas.dato@gmail.com> | 2024-10-14 00:04:33 -0300 |
commit | 8d8819359d33b24454289a8a4c456a1c4caa5e26 (patch) | |
tree | 20cba3825f02f057d0ee04250914e19be2bb936a | |
parent | 675b41fab7711aee57efcd72a9880f8c0b5253ed (diff) | |
download | libtuberia-8d8819359d33b24454289a8a4c456a1c4caa5e26.tar.gz |
adding more tests
-rw-r--r-- | test/test_itc.c | 3 | ||||
-rw-r--r-- | test/test_tuberia.c | 116 |
2 files changed, 101 insertions, 18 deletions
diff --git a/test/test_itc.c b/test/test_itc.c index ba96114..779a10b 100644 --- a/test/test_itc.c +++ b/test/test_itc.c @@ -94,7 +94,7 @@ static void *test_itc_wait_empty_th(void *_ctx) itc *ctx = _ctx; int *e; - sleep(1); + sleep(2); TEST(ctx != NULL); TEST((e = itc_retrive(ctx, 0)) != NULL); TEST(*e == 0); @@ -129,6 +129,7 @@ static void test_itc_wait_empty(void) pthread_create(&th, NULL, test_itc_wait_empty_th, ctx); pthread_detach(th); itc_wait_empty(ctx); + sleep(2); TEST(itc_get_queued(ctx) == 0); TEST(itc_retrive(ctx, 0) == NULL); itc_free(&ctx, NULL); diff --git a/test/test_tuberia.c b/test/test_tuberia.c index 8856447..6fe62b5 100644 --- a/test/test_tuberia.c +++ b/test/test_tuberia.c @@ -3,6 +3,7 @@ #include <pthread.h> #include <stdlib.h> +#include <unistd.h> static void *process(void *element, void *opaque) { @@ -10,7 +11,7 @@ static void *process(void *element, void *opaque) unsigned int *r; int *s = opaque; r = malloc(sizeof(*r)); - *r = *e + *s; + *r = *e + (s != NULL ? *s : 0); free(e); return r; } @@ -45,22 +46,22 @@ static void test_tube_source_stage_alloc_free(void) static void test_tube_alloc_free(void) { - tube *tube; + tube *ctx; tube_source *source; source = tube_source_alloc(1, NULL, NULL, free); tube_stage_append(source, tube_stage_alloc(1, process, NULL, free)); tube_stage_append(source, tube_stage_alloc(1, process, NULL, free)); tube_stage_append(source, tube_stage_alloc(1, process, NULL, free)); - TEST((tube = tube_alloc(NULL, NULL, NULL)) == NULL); - TEST((tube = tube_alloc(source, NULL, NULL)) != NULL); + TEST((ctx = tube_alloc(NULL, NULL, NULL)) == NULL); + TEST((ctx = tube_alloc(source, NULL, NULL)) != NULL); tube_source_and_stages_free(&source); - tube_free(&tube); - TEST(tube == NULL); + tube_free(&ctx); + TEST(ctx == NULL); } static void test_tube_inject_retrive(void) { - tube *tube; + tube *ctx; tube_source *source; int sum[] = {7, 5}; unsigned int *e[10]; @@ -71,7 +72,7 @@ static void test_tube_inject_retrive(void) source = tube_source_alloc(3, NULL, NULL, free); tube_stage_append(source, tube_stage_alloc(2, process, &sum[0], free)); tube_stage_append(source, tube_stage_alloc(4, process, &sum[1], free)); - tube = tube_alloc(source, NULL, NULL); + ctx = tube_alloc(source, NULL, NULL); tube_source_and_stages_free(&source); for (i = 0; i < sizeof(e)/sizeof(e[0]); i++) { @@ -79,19 +80,101 @@ static void test_tube_inject_retrive(void) *e[i] = i; } for (i = 0; i < 3; i++) { - TEST(tube_inject(tube, 1000, e[i]) == 0); + TEST(tube_inject(ctx, 1000, e[i]) == 0); } - TEST(tube_inject(tube, 1000, e[i]) < 0); - TEST(tube_start(tube) == 0); + TEST(tube_inject(ctx, 1000, e[i]) < 0); + TEST(tube_start(ctx) == 0); for (; i < sizeof(e)/sizeof(e[0]); i++) { - TEST(tube_inject(tube, 1000, e[i]) == 0); + TEST(tube_inject(ctx, 1000, e[i]) == 0); } for (i = 0; i < sizeof(e)/sizeof(e[0]); i++) { - TEST((o = tube_retrive(tube, 1000)) != NULL); + TEST((o = tube_retrive(ctx, 1000)) != NULL); TEST(*o == r[i]); free(o); } - tube_free(&tube); + tube_free(&ctx); +} + +static void test_tube_get_queued_get_slots(void) +{ + tube *ctx; + tube_source *source; + unsigned int *e; + + source = tube_source_alloc(2, NULL, NULL, free); + tube_stage_append(source, tube_stage_alloc(3, process, NULL, free)); + ctx = tube_alloc(source, NULL, NULL); + tube_source_and_stages_free(&source); + tube_start(ctx); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 0); + + e = malloc(sizeof(*e)); + *e = 1; + tube_inject(ctx, 0, e); + e = malloc(sizeof(*e)); + *e = 2; + tube_inject(ctx, 0, e); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 2); + + e = malloc(sizeof(*e)); + *e = 3; + tube_inject(ctx, 0, e); + e = malloc(sizeof(*e)); + *e = 4; + tube_inject(ctx, 0, e); + e = malloc(sizeof(*e)); + *e = 5; + tube_inject(ctx, 1000, e); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 1); + TEST(tube_get_queued(ctx, 1) == 3); + + free(tube_retrive(ctx, 1000)); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 3); + + free(tube_retrive(ctx, 1000)); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 3); + + free(tube_retrive(ctx, 1000)); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 2); + + free(tube_retrive(ctx, 0)); + free(tube_retrive(ctx, 0)); + sleep(2); + + TEST(tube_get_slots(ctx, 0) == 2); + TEST(tube_get_slots(ctx, 1) == 3); + TEST(tube_get_queued(ctx, 0) == 0); + TEST(tube_get_queued(ctx, 1) == 0); + + tube_free(&ctx); } int main(int argc, char **argv) @@ -101,9 +184,8 @@ int main(int argc, char **argv) test_tube_source_stage_alloc_free(); test_tube_alloc_free(); test_tube_inject_retrive(); - /*test_tube_get_queued(); - test_tube_get_slots(); - test_tube_wait_empty(); + test_tube_get_queued_get_slots(); + /*test_tube_wait_empty(); test_tube_discard_all();*/ return 0; } |