Skip to content

Commit e202341

Browse files
committed
refactor: Don't rely on tox_dispatch passing tox in tests.
This frees up the dispatcher from having to know that `Tox *` exists.
1 parent 34df938 commit e202341

20 files changed

+193
-140
lines changed

auto_tests/conference_av_test.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ static void handle_conference_invite(
8585

8686
ck_assert_msg(type == TOX_CONFERENCE_TYPE_AV, "tox #%u: wrong conference type: %d", autotox->index, type);
8787

88-
ck_assert_msg(toxav_join_av_groupchat(tox, friend_number, cookie, length, audio_callback, user_data) == 0,
88+
ck_assert_msg(toxav_join_av_groupchat(autotox->tox, friend_number, cookie, length, audio_callback, user_data) == 0,
8989
"tox #%u: failed to join group", autotox->index);
9090
}
9191

@@ -95,12 +95,12 @@ static void handle_conference_connected(
9595
const AutoTox *autotox = (AutoTox *)user_data;
9696
State *state = (State *)autotox->state;
9797

98-
if (state->invited_next || tox_self_get_friend_list_size(tox) <= 1) {
98+
if (state->invited_next || tox_self_get_friend_list_size(autotox->tox) <= 1) {
9999
return;
100100
}
101101

102102
Tox_Err_Conference_Invite err;
103-
tox_conference_invite(tox, 1, 0, &err);
103+
tox_conference_invite(autotox->tox, 1, 0, &err);
104104
ck_assert_msg(err == TOX_ERR_CONFERENCE_INVITE_OK, "tox #%u failed to invite next friend: err = %d", autotox->index,
105105
err);
106106
printf("tox #%u: invited next friend\n", autotox->index);

auto_tests/conference_double_invite_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static void handle_conference_invite(
3030

3131
if (friend_number != -1) {
3232
Tox_Err_Conference_Join err;
33-
state->conference = tox_conference_join(tox, friend_number, cookie, length, &err);
33+
state->conference = tox_conference_join(autotox->tox, friend_number, cookie, length, &err);
3434
ck_assert_msg(err == TOX_ERR_CONFERENCE_JOIN_OK,
3535
"attempting to join the conference returned with an error: %d", err);
3636
fprintf(stderr, "tox%u joined conference %u\n", autotox->index, state->conference);

auto_tests/conference_invite_merge_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ static void handle_conference_invite(
2323

2424
if (friend_number != -1) {
2525
Tox_Err_Conference_Join err;
26-
state->conference = tox_conference_join(tox, friend_number, cookie, length, &err);
26+
state->conference = tox_conference_join(autotox->tox, friend_number, cookie, length, &err);
2727
ck_assert_msg(err == TOX_ERR_CONFERENCE_JOIN_OK,
2828
"attempting to join the conference returned with an error: %d", err);
2929
fprintf(stderr, "#%u accepted invite to conference %u\n", autotox->index, state->conference);

auto_tests/conference_peer_nick_test.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ static void handle_conference_invite(
2828
fprintf(stderr, "tox%u joining conference\n", autotox->index);
2929

3030
Tox_Err_Conference_Join err;
31-
state->conference = tox_conference_join(tox, friend_number, cookie, length, &err);
31+
state->conference = tox_conference_join(autotox->tox, friend_number, cookie, length, &err);
3232
ck_assert_msg(err == TOX_ERR_CONFERENCE_JOIN_OK,
3333
"attempting to join the conference returned with an error: %d", err);
3434
fprintf(stderr, "tox%u joined conference %u\n", autotox->index, state->conference);
@@ -45,7 +45,7 @@ static void handle_peer_list_changed(Tox *tox, const Tox_Event_Conference_Peer_L
4545
autotox->index, conference_number);
4646

4747
Tox_Err_Conference_Peer_Query err;
48-
uint32_t const count = tox_conference_peer_count(tox, conference_number, &err);
48+
uint32_t const count = tox_conference_peer_count(autotox->tox, conference_number, &err);
4949
ck_assert_msg(err == TOX_ERR_CONFERENCE_PEER_QUERY_OK,
5050
"failed to get conference peer count: err = %d", err);
5151
printf("tox%u has %u peers\n", autotox->index, count);

auto_tests/conference_simple_test.c

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
typedef struct State {
1212
uint32_t id;
13+
Tox *tox;
1314
bool self_online;
1415
bool friend_online;
1516
bool invited_next;
@@ -56,7 +57,7 @@ static void handle_conference_invite(Tox *tox, const Tox_Event_Conference_Invite
5657

5758
{
5859
Tox_Err_Conference_Join err;
59-
state->conference = tox_conference_join(tox, friend_number, cookie, length, &err);
60+
state->conference = tox_conference_join(state->tox, friend_number, cookie, length, &err);
6061
ck_assert_msg(err == TOX_ERR_CONFERENCE_JOIN_OK, "failed to join a conference: err = %d", err);
6162
fprintf(stderr, "tox%u Joined conference %u\n", state->id, state->conference);
6263
state->joined = true;
@@ -89,7 +90,7 @@ static void handle_conference_peer_list_changed(Tox *tox, const Tox_Event_Confer
8990
state->id, conference_number);
9091

9192
Tox_Err_Conference_Peer_Query err;
92-
uint32_t count = tox_conference_peer_count(tox, conference_number, &err);
93+
uint32_t count = tox_conference_peer_count(state->tox, conference_number, &err);
9394

9495
if (err != TOX_ERR_CONFERENCE_PEER_QUERY_OK) {
9596
fprintf(stderr, "ERROR: %d\n", err);
@@ -107,7 +108,7 @@ static void handle_conference_connected(Tox *tox, const Tox_Event_Conference_Con
107108
// We're tox2, so now we invite tox3.
108109
if (state->id == 2 && !state->invited_next) {
109110
Tox_Err_Conference_Invite err;
110-
tox_conference_invite(tox, 1, state->conference, &err);
111+
tox_conference_invite(state->tox, 1, state->conference, &err);
111112
ck_assert_msg(err == TOX_ERR_CONFERENCE_INVITE_OK, "tox2 failed to invite tox3: err = %d", err);
112113

113114
state->invited_next = true;
@@ -126,14 +127,12 @@ static void iterate_one(
126127
}
127128

128129
static void iterate3_wait(
129-
Tox *tox1, State *state1,
130-
Tox *tox2, State *state2,
131-
Tox *tox3, State *state3,
130+
State *state1, State *state2, State *state3,
132131
const Tox_Dispatch *dispatch, int interval)
133132
{
134-
iterate_one(tox1, state1, dispatch);
135-
iterate_one(tox2, state2, dispatch);
136-
iterate_one(tox3, state3, dispatch);
133+
iterate_one(state1->tox, state1, dispatch);
134+
iterate_one(state2->tox, state2, dispatch);
135+
iterate_one(state3->tox, state3, dispatch);
137136

138137
c_sleep(interval);
139138
}
@@ -147,32 +146,32 @@ int main(void)
147146
State state3 = {3};
148147

149148
// Create toxes.
150-
Tox *tox1 = tox_new_log(nullptr, nullptr, &state1.id);
151-
Tox *tox2 = tox_new_log(nullptr, nullptr, &state2.id);
152-
Tox *tox3 = tox_new_log(nullptr, nullptr, &state3.id);
149+
state1.tox = tox_new_log(nullptr, nullptr, &state1.id);
150+
state2.tox = tox_new_log(nullptr, nullptr, &state2.id);
151+
state3.tox = tox_new_log(nullptr, nullptr, &state3.id);
153152

154-
tox_events_init(tox1);
155-
tox_events_init(tox2);
156-
tox_events_init(tox3);
153+
tox_events_init(state1.tox);
154+
tox_events_init(state2.tox);
155+
tox_events_init(state3.tox);
157156

158157
// tox1 <-> tox2, tox2 <-> tox3
159158
uint8_t key[TOX_PUBLIC_KEY_SIZE];
160-
tox_self_get_public_key(tox2, key);
161-
tox_friend_add_norequest(tox1, key, nullptr); // tox1 -> tox2
162-
tox_self_get_public_key(tox1, key);
163-
tox_friend_add_norequest(tox2, key, nullptr); // tox2 -> tox1
164-
tox_self_get_public_key(tox3, key);
165-
tox_friend_add_norequest(tox2, key, nullptr); // tox2 -> tox3
166-
tox_self_get_public_key(tox2, key);
167-
tox_friend_add_norequest(tox3, key, nullptr); // tox3 -> tox2
159+
tox_self_get_public_key(state2.tox, key);
160+
tox_friend_add_norequest(state1.tox, key, nullptr); // tox1 -> tox2
161+
tox_self_get_public_key(state1.tox, key);
162+
tox_friend_add_norequest(state2.tox, key, nullptr); // tox2 -> tox1
163+
tox_self_get_public_key(state3.tox, key);
164+
tox_friend_add_norequest(state2.tox, key, nullptr); // tox2 -> tox3
165+
tox_self_get_public_key(state2.tox, key);
166+
tox_friend_add_norequest(state3.tox, key, nullptr); // tox3 -> tox2
168167

169168
printf("bootstrapping tox2 and tox3 off tox1\n");
170169
uint8_t dht_key[TOX_PUBLIC_KEY_SIZE];
171-
tox_self_get_dht_id(tox1, dht_key);
172-
const uint16_t dht_port = tox_self_get_udp_port(tox1, nullptr);
170+
tox_self_get_dht_id(state1.tox, dht_key);
171+
const uint16_t dht_port = tox_self_get_udp_port(state1.tox, nullptr);
173172

174-
tox_bootstrap(tox2, "localhost", dht_port, dht_key, nullptr);
175-
tox_bootstrap(tox3, "localhost", dht_port, dht_key, nullptr);
173+
tox_bootstrap(state2.tox, "localhost", dht_port, dht_key, nullptr);
174+
tox_bootstrap(state3.tox, "localhost", dht_port, dht_key, nullptr);
176175

177176
Tox_Dispatch *dispatch = tox_dispatch_new(nullptr);
178177
ck_assert(dispatch != nullptr);
@@ -191,7 +190,7 @@ int main(void)
191190
fprintf(stderr, "Waiting for toxes to come online\n");
192191

193192
do {
194-
iterate3_wait(tox1, &state1, tox2, &state2, tox3, &state3, dispatch, 100);
193+
iterate3_wait(&state1, &state2, &state3, dispatch, 100);
195194
} while (!state1.self_online || !state2.self_online || !state3.self_online);
196195

197196
fprintf(stderr, "Toxes are online\n");
@@ -200,15 +199,15 @@ int main(void)
200199
fprintf(stderr, "Waiting for friends to connect\n");
201200

202201
do {
203-
iterate3_wait(tox1, &state1, tox2, &state2, tox3, &state3, dispatch, 100);
202+
iterate3_wait(&state1, &state2, &state3, dispatch, 100);
204203
} while (!state1.friend_online || !state2.friend_online || !state3.friend_online);
205204

206205
fprintf(stderr, "Friends are connected\n");
207206

208207
{
209208
// Create new conference, tox1 is the founder.
210209
Tox_Err_Conference_New err;
211-
state1.conference = tox_conference_new(tox1, &err);
210+
state1.conference = tox_conference_new(state1.tox, &err);
212211
state1.joined = true;
213212
ck_assert_msg(err == TOX_ERR_CONFERENCE_NEW_OK, "failed to create a conference: err = %d", err);
214213
fprintf(stderr, "Created conference: id = %u\n", state1.conference);
@@ -217,7 +216,7 @@ int main(void)
217216
{
218217
// Invite friend.
219218
Tox_Err_Conference_Invite err;
220-
tox_conference_invite(tox1, 0, state1.conference, &err);
219+
tox_conference_invite(state1.tox, 0, state1.conference, &err);
221220
ck_assert_msg(err == TOX_ERR_CONFERENCE_INVITE_OK, "failed to invite a friend: err = %d", err);
222221
state1.invited_next = true;
223222
fprintf(stderr, "tox1 invited tox2\n");
@@ -226,23 +225,23 @@ int main(void)
226225
fprintf(stderr, "Waiting for invitation to arrive\n");
227226

228227
do {
229-
iterate3_wait(tox1, &state1, tox2, &state2, tox3, &state3, dispatch, 100);
228+
iterate3_wait(&state1, &state2, &state3, dispatch, 100);
230229
} while (!state1.joined || !state2.joined || !state3.joined);
231230

232231
fprintf(stderr, "Invitations accepted\n");
233232

234233
fprintf(stderr, "Waiting for peers to come online\n");
235234

236235
do {
237-
iterate3_wait(tox1, &state1, tox2, &state2, tox3, &state3, dispatch, 100);
236+
iterate3_wait(&state1, &state2, &state3, dispatch, 100);
238237
} while (state1.peers == 0 || state2.peers == 0 || state3.peers == 0);
239238

240239
fprintf(stderr, "All peers are online\n");
241240

242241
{
243242
fprintf(stderr, "tox1 sends a message to the group: \"hello!\"\n");
244243
Tox_Err_Conference_Send_Message err;
245-
tox_conference_send_message(tox1, state1.conference, TOX_MESSAGE_TYPE_NORMAL,
244+
tox_conference_send_message(state1.tox, state1.conference, TOX_MESSAGE_TYPE_NORMAL,
246245
(const uint8_t *)"hello!", 7, &err);
247246

248247
if (err != TOX_ERR_CONFERENCE_SEND_MESSAGE_OK) {
@@ -254,16 +253,16 @@ int main(void)
254253
fprintf(stderr, "Waiting for messages to arrive\n");
255254

256255
do {
257-
iterate3_wait(tox1, &state1, tox2, &state2, tox3, &state3, dispatch, 100);
256+
iterate3_wait(&state1, &state2, &state3, dispatch, 100);
258257
c_sleep(100);
259258
} while (!state2.received || !state3.received);
260259

261260
fprintf(stderr, "Messages received. Test complete.\n");
262261

263262
tox_dispatch_free(dispatch);
264-
tox_kill(tox3);
265-
tox_kill(tox2);
266-
tox_kill(tox1);
263+
tox_kill(state3.tox);
264+
tox_kill(state2.tox);
265+
tox_kill(state1.tox);
267266

268267
return 0;
269268
}

auto_tests/conference_test.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ static void handle_conference_invite(
5656
ck_assert_msg(type == TOX_CONFERENCE_TYPE_TEXT, "tox #%u: wrong conference type: %d", autotox->index, type);
5757

5858
Tox_Err_Conference_Join err;
59-
uint32_t g_num = tox_conference_join(tox, friendnumber, data, length, &err);
59+
uint32_t g_num = tox_conference_join(autotox->tox, friendnumber, data, length, &err);
6060

6161
ck_assert_msg(err == TOX_ERR_CONFERENCE_JOIN_OK, "tox #%u: error joining group: %d", autotox->index, err);
6262
ck_assert_msg(g_num == 0, "tox #%u: group number was not 0", autotox->index);
6363

6464
// Try joining again. We should only be allowed to join once.
65-
tox_conference_join(tox, friendnumber, data, length, &err);
65+
tox_conference_join(autotox->tox, friendnumber, data, length, &err);
6666
ck_assert_msg(err != TOX_ERR_CONFERENCE_JOIN_OK,
6767
"tox #%u: joining groupchat twice should be impossible.", autotox->index);
6868
}
@@ -73,12 +73,12 @@ static void handle_conference_connected(
7373
const AutoTox *autotox = (AutoTox *)user_data;
7474
State *state = (State *)autotox->state;
7575

76-
if (state->invited_next || tox_self_get_friend_list_size(tox) <= 1) {
76+
if (state->invited_next || tox_self_get_friend_list_size(autotox->tox) <= 1) {
7777
return;
7878
}
7979

8080
Tox_Err_Conference_Invite err;
81-
tox_conference_invite(tox, 1, 0, &err);
81+
tox_conference_invite(autotox->tox, 1, 0, &err);
8282
ck_assert_msg(err == TOX_ERR_CONFERENCE_INVITE_OK, "tox #%u failed to invite next friend: err = %d", autotox->index,
8383
err);
8484
printf("tox #%u: invited next friend\n", autotox->index);

auto_tests/dht_getnodes_api_test.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ static void getnodes_response_cb(Tox *tox, const Tox_Event_Dht_Get_Nodes_Respons
7676
{
7777
ck_assert(user_data != nullptr);
7878

79-
AutoTox *autotoxes = (AutoTox *)user_data;
80-
State *state = (State *)autotoxes->state;
79+
AutoTox *autotox = (AutoTox *)user_data;
80+
State *state = (State *)autotox->state;
8181

8282
const uint8_t *public_key = tox_event_dht_get_nodes_response_get_public_key(event);
8383
const char *ip = (const char *)tox_event_dht_get_nodes_response_get_ip(event);
@@ -101,7 +101,7 @@ static void getnodes_response_cb(Tox *tox, const Tox_Event_Dht_Get_Nodes_Respons
101101

102102
// ask new node to give us their close nodes to every public key
103103
for (size_t i = 0; i < NUM_TOXES; ++i) {
104-
tox_dht_get_nodes(tox, public_key, ip, port, state->public_key_list[i], nullptr);
104+
tox_dht_get_nodes(autotox->tox, public_key, ip, port, state->public_key_list[i], nullptr);
105105
}
106106
}
107107

auto_tests/file_transfer_test.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828

2929
static void accept_friend_request(Tox *m, const Tox_Event_Friend_Request *event, void *userdata)
3030
{
31+
Tox *tox = (Tox *)userdata;
32+
3133
const uint8_t *public_key = tox_event_friend_request_get_public_key(event);
3234
const uint8_t *data = tox_event_friend_request_get_message(event);
3335
const size_t length = tox_event_friend_request_get_message_length(event);
3436

3537
if (length == 7 && memcmp("Gentoo", data, 7) == 0) {
36-
tox_friend_add_norequest(m, public_key, nullptr);
38+
tox_friend_add_norequest(tox, public_key, nullptr);
3739
}
3840
}
3941

@@ -45,6 +47,8 @@ static uint32_t file_accepted;
4547
static uint64_t file_size;
4648
static void tox_file_receive(Tox *tox, const Tox_Event_File_Recv *event, void *userdata)
4749
{
50+
Tox *state_tox = (Tox *)userdata;
51+
4852
const uint32_t friend_number = tox_event_file_recv_get_friend_number(event);
4953
const uint32_t file_number = tox_event_file_recv_get_file_number(event);
5054
const uint32_t kind = tox_event_file_recv_get_kind(event);
@@ -59,7 +63,7 @@ static void tox_file_receive(Tox *tox, const Tox_Event_File_Recv *event, void *u
5963

6064
uint8_t file_id[TOX_FILE_ID_LENGTH];
6165

62-
ck_assert_msg(tox_file_get_file_id(tox, friend_number, file_number, file_id, nullptr), "tox_file_get_file_id error");
66+
ck_assert_msg(tox_file_get_file_id(state_tox, friend_number, file_number, file_id, nullptr), "tox_file_get_file_id error");
6367

6468
ck_assert_msg(memcmp(file_id, file_cmp_id, TOX_FILE_ID_LENGTH) == 0, "bad file_id");
6569

@@ -74,7 +78,7 @@ static void tox_file_receive(Tox *tox, const Tox_Event_File_Recv *event, void *u
7478

7579
Tox_Err_File_Seek err_s;
7680

77-
ck_assert_msg(tox_file_seek(tox, friend_number, file_number, 1337, &err_s), "tox_file_seek error");
81+
ck_assert_msg(tox_file_seek(state_tox, friend_number, file_number, 1337, &err_s), "tox_file_seek error");
7882

7983
ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_OK, "tox_file_seek wrong error");
8084

@@ -84,13 +88,13 @@ static void tox_file_receive(Tox *tox, const Tox_Event_File_Recv *event, void *u
8488

8589
Tox_Err_File_Control error;
8690

87-
ck_assert_msg(tox_file_control(tox, friend_number, file_number, TOX_FILE_CONTROL_RESUME, &error),
91+
ck_assert_msg(tox_file_control(state_tox, friend_number, file_number, TOX_FILE_CONTROL_RESUME, &error),
8892
"tox_file_control failed. %i", error);
8993
++file_accepted;
9094

9195
Tox_Err_File_Seek err_s;
9296

93-
ck_assert_msg(!tox_file_seek(tox, friend_number, file_number, 1234, &err_s), "tox_file_seek no error");
97+
ck_assert_msg(!tox_file_seek(state_tox, friend_number, file_number, 1234, &err_s), "tox_file_seek no error");
9498

9599
ck_assert_msg(err_s == TOX_ERR_FILE_SEEK_DENIED, "tox_file_seek wrong error");
96100
}
@@ -114,6 +118,8 @@ static uint8_t sending_num;
114118
static bool file_sending_done;
115119
static void tox_file_chunk_request(Tox *tox, const Tox_Event_File_Chunk_Request *event, void *user_data)
116120
{
121+
Tox *state_tox = (Tox *)user_data;
122+
117123
const uint32_t friend_number = tox_event_file_chunk_request_get_friend_number(event);
118124
const uint32_t file_number = tox_event_file_chunk_request_get_file_number(event);
119125
const uint64_t position = tox_event_file_chunk_request_get_position(event);
@@ -141,7 +147,7 @@ static void tox_file_chunk_request(Tox *tox, const Tox_Event_File_Chunk_Request
141147
memset(f_data, sending_num, length);
142148

143149
Tox_Err_File_Send_Chunk error;
144-
tox_file_send_chunk(tox, friend_number, file_number, position, f_data, length, &error);
150+
tox_file_send_chunk(state_tox, friend_number, file_number, position, f_data, length, &error);
145151

146152
ck_assert_msg(error == TOX_ERR_FILE_SEND_CHUNK_OK,
147153
"could not send chunk, error num=%d pos=%d len=%d", (int)error, (int)position, (int)length);
@@ -181,7 +187,7 @@ static void iterate_and_dispatch(const Tox_Dispatch *dispatch, Tox *tox)
181187

182188
events = tox_events_iterate(tox, true, &err);
183189
ck_assert(err == TOX_ERR_EVENTS_ITERATE_OK);
184-
tox_dispatch_invoke(dispatch, events, tox, nullptr);
190+
tox_dispatch_invoke(dispatch, events, tox, tox);
185191
tox_events_free(events);
186192
}
187193

0 commit comments

Comments
 (0)