diff options
author | Michał Łyszczek <michal.lyszczek@bofc.pl> | 2018-01-31 11:52:13 +0100 |
---|---|---|
committer | Michał Łyszczek <michal.lyszczek@bofc.pl> | 2018-01-31 11:52:13 +0100 |
commit | eb64f0acfce4102b6af59916c7f1d3372c1ef7b0 (patch) | |
tree | d2fb62ab53f00338574a679a47ac0e9cfbac6835 | |
parent | cd5e95fea660148140136cfb5e88b72eca754e5d (diff) | |
download | librb-eb64f0acfce4102b6af59916c7f1d3372c1ef7b0.tar.gz librb-eb64f0acfce4102b6af59916c7f1d3372c1ef7b0.tar.bz2 librb-eb64f0acfce4102b6af59916c7f1d3372c1ef7b0.zip |
add: tests for new default operation mode
-rw-r--r-- | rb/tests.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -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(); } |