return TRUE;
}
+const int user_1 = 1;
+const int user_2 = 2;
+
int test_subsession_switch_user_wait_callback(subsession_event_info info, void *cb_data) {
test_user_data_cb_t *user_data = (test_user_data_cb_t *)cb_data;
user_data->user_id = info.switch_user.next_user;
user_data->prev_user_id = info.switch_user.prev_user;
user_data->callback_result = subsession_switch_wait_done(user_data->session_uid, user_data->switch_id);
- g_atomic_int_inc(&user_data->callback_reference);
-
+ if (user_data->user_id == user_2) {
+ g_atomic_int_inc(&user_data->callback_reference);
+ }
return 0;
}
-const int user_1 = 1;
-const int user_2 = 2;
-
enum {
add_user_1 = 0,
add_user_2,
remove_user_1,
remove_user_2,
- switch_user,
+ switch_user_to_1,
+ switch_user_to_2,
switch_wait,
};
using tud_ = test_user_data_cb_t;
-using ud_ = struct ud_ctrl_t<tud_, tud_, tud_, tud_, tud_, tud_>;
+using ud_ = struct ud_ctrl_t<tud_, tud_, tud_, tud_, tud_, tud_, tud_>;
template<int N>
int add_user_wrap(int user_id, subsession_reply_callback cb, ud_ &ud) {
TEST(subsession_switch_user_wait, APISwitchUserStarted) {
ud_ ud = { .loop = g_main_loop_new (NULL, FALSE),
- .t = std::tuple<tud_, tud_, tud_, tud_, tud_, tud_>(),
+ .t = std::tuple<tud_, tud_, tud_, tud_, tud_, tud_, tud_>(),
};
std::apply([](auto &... args){( (init_user<tud_ &>(args) ), ...); }, ud.t );
test_subsession_switch_user_wait_callback, (void *)&std::get<switch_wait>(ud.t) );
int add_user_res_1 = add_user_wrap<add_user_1>(user_1, test_reply_callback, ud);
-
int add_user_res_2 = add_user_wrap<add_user_2>(user_2, test_reply_callback, ud);
- std::get<switch_user>(ud.t).prev_user_id = user_1;
- std::get<switch_user>(ud.t).user_id = user_2;
+ std::get<switch_user_to_1>(ud.t).prev_user_id = user_1;
+ std::get<switch_user_to_1>(ud.t).user_id = user_1;
- int switch_user_res = subsession_switch_user(test_subsession_uid, std::get<switch_user>(ud.t).user_id, test_reply_callback, (void *)&std::get<switch_user>(ud.t));
+ int switch_user_res_to_1 = subsession_switch_user(test_subsession_uid, std::get<switch_user_to_1>(ud.t).user_id, test_reply_callback, (void *)&std::get<switch_user_to_1>(ud.t));
- int remove_user_res_1 = remove_user_wrap<remove_user_1>(user_1, test_reply_callback, ud);
+ std::get<switch_user_to_2>(ud.t).prev_user_id = user_1;
+ std::get<switch_user_to_2>(ud.t).user_id = user_2;
+
+ int switch_user_res_to_2 = subsession_switch_user(test_subsession_uid, std::get<switch_user_to_2>(ud.t).user_id, test_reply_callback, (void *)&std::get<switch_user_to_2>(ud.t));
+
+ int remove_user_res_1 = remove_user_wrap<remove_user_1>(user_1, test_reply_callback, ud);
int remove_user_res_2 = remove_user_wrap<remove_user_2>(user_2, test_reply_callback, ud);
EXPECT_EQ(switch_user_wait_res, 0);
EXPECT_EQ(add_user_res_1, 0);
EXPECT_EQ(remove_user_res_1, 0);
- EXPECT_EQ(switch_user_res, 0);
+ EXPECT_EQ(switch_user_res_to_1, 0);
+ EXPECT_EQ(switch_user_res_to_2, 0);
EXPECT_EQ(add_user_res_2, 0);
EXPECT_EQ(remove_user_res_2, 0);
EXPECT_EQ(0, std::get<add_user_1>(ud.t).callback_result);
EXPECT_EQ(0, std::get<add_user_2>(ud.t).callback_result);
- EXPECT_EQ(0, std::get<switch_user>(ud.t).callback_result);
+ EXPECT_EQ(0, std::get<switch_user_to_1>(ud.t).callback_result);
+ EXPECT_EQ(0, std::get<switch_user_to_2>(ud.t).callback_result);
EXPECT_EQ(0, std::get<remove_user_1>(ud.t).callback_result);
EXPECT_EQ(0, std::get<remove_user_2>(ud.t).callback_result);