@@ -377,7 +377,7 @@ async fn test_data_channel_parameters_max_packet_life_time_exchange() -> Result<
377377 ) ;
378378 assert_eq ! (
379379 dc. max_packet_lifetime( ) ,
380- max_packet_life_time,
380+ Some ( max_packet_life_time) ,
381381 "should match"
382382 ) ;
383383
@@ -394,7 +394,7 @@ async fn test_data_channel_parameters_max_packet_life_time_exchange() -> Result<
394394 ) ;
395395 assert_eq ! (
396396 d. max_packet_lifetime( ) ,
397- max_packet_life_time,
397+ Some ( max_packet_life_time) ,
398398 "should match"
399399 ) ;
400400 let done_tx2 = Arc :: clone ( & done_tx) ;
@@ -428,7 +428,7 @@ async fn test_data_channel_parameters_max_retransmits_exchange() -> Result<()> {
428428
429429 // Check if parameters are correctly set
430430 assert ! ( !dc. ordered( ) , "Ordered should be set to false" ) ;
431- assert_eq ! ( dc. max_retransmits( ) , max_retransmits, "should match" ) ;
431+ assert_eq ! ( dc. max_retransmits( ) , Some ( max_retransmits) , "should match" ) ;
432432
433433 let done_tx = Arc :: new ( Mutex :: new ( Some ( done_tx) ) ) ;
434434 answer_pc. on_data_channel ( Box :: new ( move |d : Arc < RTCDataChannel > | {
@@ -440,7 +440,58 @@ async fn test_data_channel_parameters_max_retransmits_exchange() -> Result<()> {
440440
441441 // Check if parameters are correctly set
442442 assert ! ( !d. ordered( ) , "Ordered should be set to false" ) ;
443- assert_eq ! ( max_retransmits, d. max_retransmits( ) , "should match" ) ;
443+ assert_eq ! ( Some ( max_retransmits) , d. max_retransmits( ) , "should match" ) ;
444+ let done_tx2 = Arc :: clone ( & done_tx) ;
445+ Box :: pin ( async move {
446+ let mut done = done_tx2. lock ( ) . await ;
447+ done. take ( ) ;
448+ } )
449+ } ) ) ;
450+
451+ close_reliability_param_test ( & mut offer_pc, & mut answer_pc, done_rx) . await ?;
452+
453+ Ok ( ( ) )
454+ }
455+
456+ #[ tokio:: test]
457+ async fn test_data_channel_parameters_unreliable_unordered_exchange ( ) -> Result < ( ) > {
458+ let mut m = MediaEngine :: default ( ) ;
459+ m. register_default_codecs ( ) ?;
460+ let api = APIBuilder :: new ( ) . with_media_engine ( m) . build ( ) ;
461+
462+ let ordered = false ;
463+ let max_retransmits = Some ( 0 ) ;
464+ let max_packet_life_time = None ;
465+ let options = RTCDataChannelInit {
466+ ordered : Some ( ordered) ,
467+ max_retransmits,
468+ max_packet_life_time,
469+ ..Default :: default ( )
470+ } ;
471+
472+ let ( mut offer_pc, mut answer_pc, dc, done_tx, done_rx) =
473+ set_up_data_channel_parameters_test ( & api, Some ( options) ) . await ?;
474+
475+ // Check if parameters are correctly set
476+ assert_eq ! (
477+ dc. ordered( ) ,
478+ ordered,
479+ "Ordered should be same value as set in DataChannelInit"
480+ ) ;
481+ assert_eq ! ( dc. max_retransmits, max_retransmits, "should match" ) ;
482+
483+ let done_tx = Arc :: new ( Mutex :: new ( Some ( done_tx) ) ) ;
484+ answer_pc. on_data_channel ( Box :: new ( move |d : Arc < RTCDataChannel > | {
485+ if d. label ( ) != EXPECTED_LABEL {
486+ return Box :: pin ( async { } ) ;
487+ }
488+ // Check if parameters are correctly set
489+ assert_eq ! (
490+ d. ordered( ) ,
491+ ordered,
492+ "Ordered should be same value as set in DataChannelInit"
493+ ) ;
494+ assert_eq ! ( d. max_retransmits( ) , max_retransmits, "should match" ) ;
444495 let done_tx2 = Arc :: clone ( & done_tx) ;
445496 Box :: pin ( async move {
446497 let mut done = done_tx2. lock ( ) . await ;
@@ -453,6 +504,56 @@ async fn test_data_channel_parameters_max_retransmits_exchange() -> Result<()> {
453504 Ok ( ( ) )
454505}
455506
507+ #[ tokio:: test]
508+ async fn test_data_channel_parameters_reliable_unordered_exchange ( ) -> Result < ( ) > {
509+ let mut m = MediaEngine :: default ( ) ;
510+ m. register_default_codecs ( ) ?;
511+ let api = APIBuilder :: new ( ) . with_media_engine ( m) . build ( ) ;
512+
513+ let ordered = false ;
514+ let max_retransmits = None ;
515+ let max_packet_life_time = None ;
516+ let options = RTCDataChannelInit {
517+ ordered : Some ( ordered) ,
518+ max_retransmits,
519+ max_packet_life_time,
520+ ..Default :: default ( )
521+ } ;
522+
523+ let ( mut offer_pc, mut answer_pc, dc, done_tx, done_rx) =
524+ set_up_data_channel_parameters_test ( & api, Some ( options) ) . await ?;
525+
526+ // Check if parameters are correctly set
527+ assert_eq ! (
528+ dc. ordered( ) ,
529+ ordered,
530+ "Ordered should be same value as set in DataChannelInit"
531+ ) ;
532+ assert_eq ! ( dc. max_retransmits, max_retransmits, "should match" ) ;
533+
534+ let done_tx = Arc :: new ( Mutex :: new ( Some ( done_tx) ) ) ;
535+ answer_pc. on_data_channel ( Box :: new ( move |d : Arc < RTCDataChannel > | {
536+ if d. label ( ) != EXPECTED_LABEL {
537+ return Box :: pin ( async { } ) ;
538+ }
539+ // Check if parameters are correctly set
540+ assert_eq ! (
541+ d. ordered( ) ,
542+ ordered,
543+ "Ordered should be same value as set in DataChannelInit"
544+ ) ;
545+ assert_eq ! ( d. max_retransmits( ) , max_retransmits, "should match" ) ;
546+ let done_tx2 = Arc :: clone ( & done_tx) ;
547+ Box :: pin ( async move {
548+ let mut done = done_tx2. lock ( ) . await ;
549+ done. take ( ) ;
550+ } )
551+ } ) ) ;
552+
553+ close_reliability_param_test ( & mut offer_pc, & mut answer_pc, done_rx) . await ?;
554+
555+ Ok ( ( ) )
556+ }
456557#[ tokio:: test]
457558async fn test_data_channel_parameters_protocol_exchange ( ) -> Result < ( ) > {
458559 let mut m = MediaEngine :: default ( ) ;
@@ -743,7 +844,7 @@ async fn test_data_channel_parameters_go() -> Result<()> {
743844 // Check if parameters are correctly set
744845 assert ! ( dc. ordered( ) , "Ordered should be set to true" ) ;
745846 assert_eq ! (
746- max_packet_life_time,
847+ Some ( max_packet_life_time) ,
747848 dc. max_packet_lifetime( ) ,
748849 "should match"
749850 ) ;
@@ -759,7 +860,7 @@ async fn test_data_channel_parameters_go() -> Result<()> {
759860 // Check if parameters are correctly set
760861 assert ! ( d. ordered, "Ordered should be set to true" ) ;
761862 assert_eq ! (
762- max_packet_life_time,
863+ Some ( max_packet_life_time) ,
763864 d. max_packet_lifetime( ) ,
764865 "should match"
765866 ) ;
0 commit comments