@@ -24,6 +24,7 @@ public class UniversalRpcNetworkBehaviour : NetworkBehaviour
2424 public string Received = string . Empty ;
2525 public Tuple < int , bool , float , string > ReceivedParams = null ;
2626 public ulong ReceivedFrom = ulong . MaxValue ;
27+ public int ReceivedCount ;
2728
2829 public void OnRpcReceived ( )
2930 {
@@ -32,6 +33,7 @@ public void OnRpcReceived()
3233
3334 var currentMethod = sf . GetMethod ( ) ;
3435 Received = currentMethod . Name ;
36+ ReceivedCount ++ ;
3537 }
3638 public void OnRpcReceivedWithParams ( int a , bool b , float f , string s )
3739 {
@@ -40,6 +42,7 @@ public void OnRpcReceivedWithParams(int a, bool b, float f, string s)
4042
4143 var currentMethod = sf . GetMethod ( ) ;
4244 Received = currentMethod . Name ;
45+ ReceivedCount ++ ;
4346 ReceivedParams = new Tuple < int , bool , float , string > ( a , b , f , s ) ;
4447 }
4548
@@ -496,6 +499,7 @@ protected void Clear()
496499 foreach ( var obj in Object . FindObjectsByType < UniversalRpcNetworkBehaviour > ( FindObjectsSortMode . None ) )
497500 {
498501 obj . Received = string . Empty ;
502+ obj . ReceivedCount = 0 ;
499503 obj . ReceivedParams = null ;
500504 obj . ReceivedFrom = ulong . MaxValue ;
501505 }
@@ -528,10 +532,11 @@ protected UniversalRpcNetworkBehaviour GetPlayerObject(ulong ownerClientId, ulon
528532 return m_PlayerNetworkObjects [ onClient ] [ ownerClientId ] . GetComponent < UniversalRpcNetworkBehaviour > ( ) ;
529533 }
530534
531- protected void VerifyLocalReceived ( ulong objectOwner , ulong sender , string name , bool verifyReceivedFrom )
535+ protected void VerifyLocalReceived ( ulong objectOwner , ulong sender , string name , bool verifyReceivedFrom , int expectedReceived = 1 )
532536 {
533537 var obj = GetPlayerObject ( objectOwner , sender ) ;
534538 Assert . AreEqual ( name , obj . Received ) ;
539+ Assert . That ( obj . ReceivedCount , Is . EqualTo ( expectedReceived ) ) ;
535540 Assert . IsNull ( obj . ReceivedParams ) ;
536541 if ( verifyReceivedFrom )
537542 {
@@ -543,6 +548,7 @@ protected void VerifyLocalReceivedWithParams(ulong objectOwner, ulong sender, st
543548 {
544549 var obj = GetPlayerObject ( objectOwner , sender ) ;
545550 Assert . AreEqual ( name , obj . Received ) ;
551+ Assert . That ( obj . ReceivedCount , Is . EqualTo ( 1 ) ) ;
546552 Assert . IsNotNull ( obj . ReceivedParams ) ;
547553 Assert . AreEqual ( i , obj . ReceivedParams . Item1 ) ;
548554 Assert . AreEqual ( b , obj . ReceivedParams . Item2 ) ;
@@ -556,17 +562,18 @@ protected void VerifyNotReceived(ulong objectOwner, ulong[] receivedBy)
556562 {
557563 UniversalRpcNetworkBehaviour playerObject = GetPlayerObject ( objectOwner , client ) ;
558564 Assert . AreEqual ( string . Empty , playerObject . Received ) ;
565+ Assert . That ( playerObject . ReceivedCount , Is . EqualTo ( 0 ) ) ;
559566 Assert . IsNull ( playerObject . ReceivedParams ) ;
560567 }
561568 }
562569
563- protected void VerifyRemoteReceived ( ulong objectOwner , ulong sender , string message , ulong [ ] receivedBy , bool verifyReceivedFrom , bool waitForMessages = true )
570+ protected void VerifyRemoteReceived ( ulong objectOwner , ulong sender , string message , ulong [ ] receivedBy , bool verifyReceivedFrom , bool waitForMessages = true , int expectedReceived = 1 )
564571 {
565572 foreach ( var client in receivedBy )
566573 {
567574 if ( client == sender )
568575 {
569- VerifyLocalReceived ( objectOwner , sender , message , verifyReceivedFrom ) ;
576+ VerifyLocalReceived ( objectOwner , sender , message , verifyReceivedFrom , expectedReceived ) ;
570577
571578 break ;
572579 }
@@ -628,6 +635,7 @@ protected void VerifyRemoteReceived(ulong objectOwner, ulong sender, string mess
628635 {
629636 UniversalRpcNetworkBehaviour playerObject = GetPlayerObject ( objectOwner , client ) ;
630637 Assert . AreEqual ( message , playerObject . Received ) ;
638+ Assert . That ( playerObject . ReceivedCount , Is . EqualTo ( expectedReceived ) ) ;
631639 Assert . IsNull ( playerObject . ReceivedParams ) ;
632640 if ( verifyReceivedFrom )
633641 {
@@ -701,6 +709,7 @@ protected void VerifyRemoteReceivedWithParams(ulong objectOwner, ulong sender, s
701709 {
702710 UniversalRpcNetworkBehaviour playerObject = GetPlayerObject ( objectOwner , client ) ;
703711 Assert . AreEqual ( message , playerObject . Received ) ;
712+ Assert . That ( playerObject . ReceivedCount , Is . EqualTo ( 1 ) ) ;
704713
705714 Assert . IsNotNull ( playerObject . ReceivedParams ) ;
706715 Assert . AreEqual ( i , playerObject . ReceivedParams . Item1 ) ;
@@ -1636,17 +1645,20 @@ public void TestMutualRecursion()
16361645
16371646 VerifyNotReceived ( NetworkManager . ServerClientId , s_ClientIds ) ;
16381647
1639- for ( var i = 0 ; i < 10 ; ++ i )
1648+ var clientListExpected = 1 ;
1649+ var serverListExpected = 2 ;
1650+ for ( var i = 1 ; i <= 10 ; ++ i )
16401651 {
16411652 WaitForMessageReceivedWithTimeTravel < RpcMessage > ( clientList ) ;
1642- VerifyRemoteReceived ( NetworkManager . ServerClientId , NetworkManager . ServerClientId , nameof ( UniversalRpcNetworkBehaviour . MutualRecursionClientRpc ) , clientIdArray , false , false ) ;
1653+ VerifyRemoteReceived ( NetworkManager . ServerClientId , NetworkManager . ServerClientId , nameof ( UniversalRpcNetworkBehaviour . MutualRecursionClientRpc ) , clientIdArray , false , false , clientListExpected ) ;
16431654 VerifyNotReceived ( NetworkManager . ServerClientId , serverIdArray ) ;
1655+ clientListExpected *= 2 ;
16441656
16451657 Clear ( ) ;
1646-
16471658 WaitForMessageReceivedWithTimeTravel < RpcMessage > ( serverList ) ;
1648- VerifyRemoteReceived ( NetworkManager . ServerClientId , NetworkManager . ServerClientId , nameof ( UniversalRpcNetworkBehaviour . MutualRecursionServerRpc ) , serverIdArray , false , false ) ;
1659+ VerifyRemoteReceived ( NetworkManager . ServerClientId , NetworkManager . ServerClientId , nameof ( UniversalRpcNetworkBehaviour . MutualRecursionServerRpc ) , serverIdArray , false , false , serverListExpected ) ;
16491660 VerifyNotReceived ( NetworkManager . ServerClientId , clientIdArray ) ;
1661+ serverListExpected *= 2 ;
16501662
16511663 Clear ( ) ;
16521664 }
0 commit comments