From eb64f0acfce4102b6af59916c7f1d3372c1ef7b0 Mon Sep 17 00:00:00 2001 From: Michał Łyszczek Date: Wed, 31 Jan 2018 11:52:13 +0100 Subject: add: tests for new default operation mode --- rb/tests.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/rb/tests.c b/rb/tests.c index 5879a9d..f7537b6 100644 --- a/rb/tests.c +++ b/rb/tests.c @@ -267,6 +267,49 @@ static void multi_thread(void) #endif +static void multithread_flag(void) +{ + struct rb *rb; + + rb = rb_new(4, 1, O_MULTITHREAD); + +#if ENABLE_THREADS + mt_assert(rb != NULL); + rb_destroy(rb); +#else + mt_assert(rb == NULL); + mt_assert(errno == ENOSYS); +#endif +} + +static void nonblocking_flag(void) +{ + struct rb *rb; + char s[6] = {0, 1, 2, 3, 4, 5}; + char e[3] = {0, 1, 2}; + char d[6]; + int r; + +#if ENABLE_THREADS + rb = rb_new(4, 1, O_NONBLOCK | O_MULTITHREAD); + r = rb_write(rb, s, sizeof(s)); + mt_fail(r == 3); + r = rb_read(rb, d, sizeof(d)); + mt_fail(r == 3); + mt_fok(memcmp(d, e, sizeof(e))); + rb_destroy(rb); + memset(d, 0, sizeof(d)); +#endif + + rb = rb_new(4, 1, 0); + r = rb_write(rb, s, sizeof(s)); + mt_fail(r == 3); + r = rb_read(rb, d, sizeof(d)); + mt_fail(r == 3); + mt_fok(memcmp(d, e, sizeof(e))); + rb_destroy(rb); +} + static void invalid_read_write(void) { struct rb *rb; @@ -444,6 +487,8 @@ int main(void) mt_run(peeking); mt_run(bad_count_value); mt_run(invalid_read_write); + mt_run(multithread_flag); + mt_run(nonblocking_flag); mt_return(); } -- cgit v1.2.3-8-gadcc