@@ -52,6 +52,7 @@ def __init__(self, index: int) -> None:
5252 self .index = index
5353 self .friends = collections .defaultdict (FriendInfo )
5454 self .conferences = collections .defaultdict (ConferenceInfo )
55+ self .name = f"tox{ index } " .encode ("utf-8" )
5556
5657 def handle_self_connection_status (self ,
5758 connection_status : core .Tox_Connection
@@ -271,11 +272,11 @@ def test_name(self) -> None:
271272 self ._wait_for_friend_online ()
272273 friend_number = self .tox2 .friend_by_public_key (self .tox1 .public_key )
273274 friend = self .tox2 .friends [friend_number ]
274- self .assertEqual (self .tox1 .name , b"" )
275+ self .assertEqual (self .tox1 .name , b"tox1 " )
275276 self .tox1 .name = b"Now that's a name I haven't heard in a long time"
276277 self .assertEqual (self .tox1 .name ,
277278 b"Now that's a name I haven't heard in a long time" )
278- self ._iterate (100 , lambda : friend .name == b"" )
279+ self ._iterate (100 , lambda : friend .name == b"tox1 " )
279280 self .assertEqual (friend .name ,
280281 b"Now that's a name I haven't heard in a long time" )
281282 self .assertEqual (
@@ -318,14 +319,103 @@ def test_read_receipt(self) -> None:
318319 def test_conference_invite (self ) -> None :
319320 self ._wait_for_friend_online ()
320321 # tox1 creates conference.
321- cnum = self .tox1 .conference_new ()
322- self .assertListEqual (self .tox1 .conference_chatlist , [cnum ])
322+ cnum1 = self .tox1 .conference_new ()
323+ self .assertListEqual (self .tox1 .conference_chatlist , [cnum1 ])
323324 # tox1 invites tox2 to conference.
324325 self .tox1 .conference_invite (
325- self .tox1 .friend_by_public_key (self .tox2 .public_key ), cnum )
326+ self .tox1 .friend_by_public_key (self .tox2 .public_key ), cnum1 )
326327 # wait for tox2 to join conference.
327328 self ._iterate (100 , lambda : not self .tox2 .conference_chatlist )
328329 self .assertEqual (len (self .tox2 .conference_chatlist ), 1 )
330+ # wait for group connection.
331+ cnum2 = self .tox2 .conference_chatlist [0 ]
332+ self ._iterate (100 , lambda : not self .tox2 .conferences [cnum2 ].connected )
333+ # tox2 invites tox3 to conference.
334+ self .tox2 .conference_invite (
335+ self .tox2 .friend_by_public_key (self .tox3 .public_key ), cnum2 )
336+ # wait for tox3 to join conference.
337+ self ._iterate (100 , lambda : not self .tox3 .conference_chatlist )
338+ self .assertEqual (len (self .tox3 .conference_chatlist ), 1 )
339+ # test conference_by_id.
340+ self .assertEqual (
341+ self .tox1 .conference_by_id (self .tox1 .conference_get_id (cnum1 )),
342+ cnum1 )
343+ self .assertEqual (self .tox1 .conference_get_type (cnum1 ),
344+ core .TOX_CONFERENCE_TYPE_TEXT )
345+
346+ def test_conference_message (self ) -> None :
347+ self ._wait_for_friend_online ()
348+ cnum1 = self .tox1 .conference_chatlist [0 ]
349+ cnum2 = self .tox2 .conference_chatlist [0 ]
350+ cnum3 = self .tox3 .conference_chatlist [0 ]
351+ # wait for all toxes to see all 3 peers.
352+ self ._iterate (
353+ 100 ,
354+ lambda : any (
355+ len (tox .conferences [tox .conference_chatlist [0 ]].peers ) < 2
356+ for tox in (self .tox1 , self .tox2 , self .tox3 )),
357+ )
358+ # wait for group connection.
359+ self ._iterate (100 , lambda : not self .tox2 .conferences [cnum2 ].connected )
360+ # check that none of the toxes have messages, yet.
361+ self .assertFalse (self .tox1 .conferences [cnum1 ].messages )
362+ self .assertFalse (self .tox2 .conferences [cnum2 ].messages )
363+ self .assertFalse (self .tox3 .conferences [cnum3 ].messages )
364+ # tox2 sends message to conference.
365+ self .tox2 .conference_send_message (cnum2 , core .TOX_MESSAGE_TYPE_NORMAL ,
366+ b"hello there!" )
367+ # wait for toxes to receive message.
368+ self ._iterate (
369+ 100 ,
370+ lambda : any (not tox .conferences [tox .conference_chatlist [0 ]].
371+ messages for tox in (self .tox1 , self .tox2 , self .tox3 )),
372+ )
373+ # check message contents.
374+ self .assertEqual (
375+ self .tox1 .conferences [cnum1 ].messages [0 ],
376+ (1 , core .TOX_MESSAGE_TYPE_NORMAL , b"hello there!" ),
377+ )
378+ self .assertEqual (
379+ self .tox2 .conferences [cnum2 ].messages [0 ],
380+ (1 , core .TOX_MESSAGE_TYPE_NORMAL , b"hello there!" ),
381+ )
382+ self .assertEqual (
383+ self .tox3 .conferences [cnum3 ].messages [0 ],
384+ (1 , core .TOX_MESSAGE_TYPE_NORMAL , b"hello there!" ),
385+ )
386+
387+ def test_conference_peer_name (self ) -> None :
388+ self ._wait_for_friend_online ()
389+ cnum1 = self .tox1 .conference_chatlist [0 ]
390+ cnum2 = self .tox2 .conference_chatlist [0 ]
391+ cnum3 = self .tox3 .conference_chatlist [0 ]
392+ # check peer names.
393+ self .assertEqual (self .tox1 .conferences [cnum1 ].peers [1 ].name , b"tox2" )
394+ self .assertEqual (self .tox2 .conferences [cnum2 ].peers [1 ].name , b"tox2" )
395+ self .assertEqual (self .tox2 .conferences [cnum2 ].peers [2 ].name , b"tox3" )
396+ self .assertEqual (self .tox3 .conferences [cnum3 ].peers [1 ].name , b"tox2" )
397+
398+ def test_conference_title (self ) -> None :
399+ self ._wait_for_friend_online ()
400+ cnum1 = self .tox1 .conference_chatlist [0 ]
401+ cnum2 = self .tox2 .conference_chatlist [0 ]
402+ cnum3 = self .tox3 .conference_chatlist [0 ]
403+ # check title isn't set yet.
404+ self .assertEqual (self .tox1 .conferences [cnum1 ].title , (0 , b"" ))
405+ self .assertEqual (self .tox2 .conferences [cnum2 ].title , (0 , b"" ))
406+ self .assertEqual (self .tox3 .conferences [cnum3 ].title , (0 , b"" ))
407+ # tox2 sets title.
408+ self .tox2 .conference_set_title (cnum1 , b"TokTok dev chat" )
409+ # wait for title to be set for tox1 and tox3.
410+ self ._iterate (
411+ 100 ,
412+ lambda : any (tox .conferences [tox .conference_chatlist [0 ]].title [1 ] ==
413+ b"" for tox in (self .tox1 , self .tox3 )),
414+ )
415+ self .assertEqual (self .tox1 .conferences [cnum2 ].title ,
416+ (1 , b"TokTok dev chat" ))
417+ self .assertEqual (self .tox3 .conferences [cnum3 ].title ,
418+ (1 , b"TokTok dev chat" ))
329419
330420
331421if __name__ == "__main__" :
0 commit comments