X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=tests%2Fcheck_session.c;h=699f58360c4f7bafd5e1151004bae88bf9c57d44;hb=c8965e545957209652f0bc79f88a1b39d8ff7ce2;hp=e48e1d468af08f186a5966c9bebd9652c868e96b;hpb=4172352914138a17340cbd2dde74d095cb61a247;p=libsigrok.git diff --git a/tests/check_session.c b/tests/check_session.c index e48e1d46..699f5836 100644 --- a/tests/check_session.c +++ b/tests/check_session.c @@ -23,24 +23,6 @@ #include "../include/libsigrok/libsigrok.h" #include "lib.h" -static struct sr_context *sr_ctx; - -static void setup(void) -{ - int ret; - - ret = sr_init(&sr_ctx); - fail_unless(ret == SR_OK, "sr_init() failed: %d.", ret); -} - -static void teardown(void) -{ - int ret; - - ret = sr_exit(sr_ctx); - fail_unless(ret == SR_OK, "sr_exit() failed: %d.", ret); -} - /* * Check whether sr_session_new() works. * If it returns != SR_OK (or segfaults) this test will fail. @@ -136,6 +118,73 @@ START_TEST(test_session_destroy_bogus) } END_TEST +START_TEST(test_session_trigger_set_get) +{ + int ret; + struct sr_session *sess; + struct sr_trigger *t1, *t2; + + sr_session_new(&sess); + t1 = sr_trigger_new("T1"); + + /* Set a trigger and see if getting it works OK. */ + ret = sr_session_trigger_set(sess, t1); + fail_unless(ret == SR_OK); + t2 = sr_session_trigger_get(sess); + fail_unless(t2 != NULL); + fail_unless(t1 == t2); + fail_unless(g_slist_length(t1->stages) == g_slist_length(t2->stages)); + fail_unless(!strcmp(t1->name, t2->name)); + + sr_session_destroy(sess); +} +END_TEST + +START_TEST(test_session_trigger_set_get_null) +{ + int ret; + struct sr_session *sess; + struct sr_trigger *t; + + sr_session_new(&sess); + + /* Adding a NULL trigger is allowed. */ + ret = sr_session_trigger_set(sess, NULL); + fail_unless(ret == SR_OK); + t = sr_session_trigger_get(sess); + fail_unless(t == NULL); + + sr_session_destroy(sess); +} +END_TEST + +START_TEST(test_session_trigger_set_null) +{ + int ret; + struct sr_trigger *t; + + t = sr_trigger_new("T1"); + + /* NULL session, must not segfault. */ + ret = sr_session_trigger_set(NULL, t); + fail_unless(ret == SR_ERR_ARG); + + /* NULL session and NULL trigger, must not segfault. */ + ret = sr_session_trigger_set(NULL, NULL); + fail_unless(ret == SR_ERR_ARG); +} +END_TEST + +START_TEST(test_session_trigger_get_null) +{ + struct sr_trigger *t; + + /* NULL session, must not segfault. */ + t = sr_session_trigger_get(NULL); + fail_unless(t == NULL); +} +END_TEST + Suite *suite_session(void) { Suite *s; @@ -144,7 +193,7 @@ Suite *suite_session(void) s = suite_create("session"); tc = tcase_create("new_destroy"); - tcase_add_checked_fixture(tc, setup, teardown); + tcase_add_checked_fixture(tc, srtest_setup, srtest_teardown); tcase_add_test(tc, test_session_new); tcase_add_test(tc, test_session_new_bogus); tcase_add_test(tc, test_session_new_multiple); @@ -152,5 +201,13 @@ Suite *suite_session(void) tcase_add_test(tc, test_session_destroy_bogus); suite_add_tcase(s, tc); + tc = tcase_create("trigger"); + tcase_add_checked_fixture(tc, srtest_setup, srtest_teardown); + tcase_add_test(tc, test_session_trigger_set_get); + tcase_add_test(tc, test_session_trigger_set_get_null); + tcase_add_test(tc, test_session_trigger_set_null); + tcase_add_test(tc, test_session_trigger_get_null); + suite_add_tcase(s, tc); + return s; }