66using Unity . Collections ;
77using Unity . Netcode ;
88using Unity . Netcode . TestHelpers . Runtime ;
9+ using UnityEngine ;
910using UnityEngine . TestTools ;
1011
1112namespace TestProject . RuntimeTests
@@ -24,6 +25,7 @@ public SceneManagementSynchronizationTests(HostOrServer hostOrServer) : base(hos
2425
2526 private struct ExpectedEvent
2627 {
28+ public bool IsSceneEvent ;
2729 public SceneEvent SceneEvent ;
2830 public ConnectionEventData ConnectionEvent ;
2931 }
@@ -51,13 +53,19 @@ private void AssertEventMatchesExpectedEvent<T>(Action<ExpectedEvent> predicate,
5153 if ( m_ExpectedEventQueue . Count > 0 )
5254 {
5355 var expectedEvent = m_ExpectedEventQueue . Dequeue ( ) ;
54- predicate ( expectedEvent ) ;
56+ try
57+ {
58+ predicate ( expectedEvent ) ;
59+ }
60+ catch ( Exception failure )
61+ {
62+ Debug . LogException ( failure ) ;
63+ }
5564 }
5665 else
5766 {
5867 Assert . Fail ( $ "Received unexpected event at index { s_NumEventsProcessed } : { eventType } ") ;
5968 }
60-
6169 s_NumEventsProcessed ++ ;
6270 }
6371
@@ -100,42 +108,30 @@ public IEnumerator SynchronizationCallbacks_Authority()
100108 var expectedClientId = GetNonAuthorityNetworkManager ( ) . LocalClientId + 1 ;
101109
102110 // Setup expected events
103- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
111+ AddExpectedEvent ( new SceneEvent ( )
104112 {
105- SceneEvent = new SceneEvent ( )
106- {
107- SceneEventType = SceneEventType . Synchronize ,
108- ClientId = expectedClientId
109- } ,
113+ SceneEventType = SceneEventType . Synchronize ,
114+ ClientId = expectedClientId
110115 } ) ;
111116
112- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
117+ AddExpectedEvent ( new SceneEvent ( )
113118 {
114- SceneEvent = new SceneEvent ( )
115- {
116- SceneEventType = SceneEventType . SynchronizeComplete ,
117- ClientId = expectedClientId ,
118- } ,
119+ SceneEventType = SceneEventType . SynchronizeComplete ,
120+ ClientId = expectedClientId ,
119121 } ) ;
120122
121- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
123+ AddExpectedEvent ( new ConnectionEventData ( )
122124 {
123- ConnectionEvent = new ConnectionEventData ( )
124- {
125- EventType = ConnectionEvent . ClientConnected ,
126- ClientId = expectedClientId ,
127- }
125+ EventType = ConnectionEvent . ClientConnected ,
126+ ClientId = expectedClientId ,
128127 } ) ;
129128
130129 if ( m_UseHost )
131130 {
132- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
131+ AddExpectedEvent ( new ConnectionEventData ( )
133132 {
134- ConnectionEvent = new ConnectionEventData ( )
135- {
136- EventType = ConnectionEvent . PeerConnected ,
137- ClientId = expectedClientId ,
138- }
133+ EventType = ConnectionEvent . PeerConnected ,
134+ ClientId = expectedClientId ,
139135 } ) ;
140136 }
141137
@@ -158,31 +154,22 @@ public IEnumerator SynchronizationCallbacks_NonAuthority()
158154 var expectedPeerClientIds = m_UseHost ? new [ ] { authorityId , peerClientId } : new [ ] { peerClientId } ;
159155
160156 // Setup expected events
161- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
157+ AddExpectedEvent ( new SceneEvent ( )
162158 {
163- SceneEvent = new SceneEvent ( )
164- {
165- SceneEventType = SceneEventType . Synchronize ,
166- ClientId = expectedClientId ,
167- } ,
159+ SceneEventType = SceneEventType . Synchronize ,
160+ ClientId = expectedClientId ,
168161 } ) ;
169- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
162+ AddExpectedEvent ( new ConnectionEventData ( )
170163 {
171- ConnectionEvent = new ConnectionEventData ( )
172- {
173- EventType = ConnectionEvent . ClientConnected ,
174- ClientId = expectedClientId ,
175- PeerClientIds = new NativeArray < ulong > ( expectedPeerClientIds . ToArray ( ) , Allocator . Persistent ) ,
176- }
164+ EventType = ConnectionEvent . ClientConnected ,
165+ ClientId = expectedClientId ,
166+ PeerClientIds = new NativeArray < ulong > ( expectedPeerClientIds . ToArray ( ) , Allocator . Persistent ) ,
177167 } ) ;
178168
179- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
169+ AddExpectedEvent ( new SceneEvent ( )
180170 {
181- SceneEvent = new SceneEvent ( )
182- {
183- SceneEventType = SceneEventType . SynchronizeComplete ,
184- ClientId = expectedClientId ,
185- } ,
171+ SceneEventType = SceneEventType . SynchronizeComplete ,
172+ ClientId = expectedClientId ,
186173 } ) ;
187174
188175 Assert . Null ( m_ManagerToTest , "m_ManagerToTest should be null as we should be testing newly created client" ) ;
@@ -203,27 +190,22 @@ public IEnumerator LateJoiningClient_PeerCallbacks()
203190 var nonAuthority = GetNonAuthorityNetworkManager ( ) ;
204191 var expectedClientId = nonAuthority . LocalClientId + 1 ;
205192 SetManagerToTest ( nonAuthority ) ;
193+
206194 // Setup expected events
207- if ( m_UseCmbService )
195+ AddExpectedEvent ( new ConnectionEventData ( )
208196 {
209- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
210- {
211- SceneEvent = new SceneEvent ( )
212- {
213- SceneEventType = SceneEventType . SynchronizeComplete ,
214- ClientId = expectedClientId ,
215- } ,
216- } ) ;
217- }
197+ EventType = ConnectionEvent . PeerConnected ,
198+ ClientId = expectedClientId ,
199+ } ) ;
218200
219- m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
201+ if ( m_UseCmbService )
220202 {
221- ConnectionEvent = new ConnectionEventData ( )
203+ AddExpectedEvent ( new SceneEvent ( )
222204 {
223- EventType = ConnectionEvent . PeerConnected ,
205+ SceneEventType = SceneEventType . SynchronizeComplete ,
224206 ClientId = expectedClientId ,
225- }
226- } ) ;
207+ } ) ;
208+ }
227209
228210 //////////////////////////////////////////
229211 // Testing event notifications
@@ -233,16 +215,34 @@ public IEnumerator LateJoiningClient_PeerCallbacks()
233215 Assert . IsEmpty ( m_ExpectedEventQueue , "Not all expected callbacks were received" ) ;
234216 }
235217
218+ private void AddExpectedEvent ( SceneEvent expectedEvent )
219+ {
220+ m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
221+ {
222+ IsSceneEvent = true ,
223+ SceneEvent = expectedEvent ,
224+ } ) ;
225+ }
226+
227+ private void AddExpectedEvent ( ConnectionEventData expectedEvent )
228+ {
229+ m_ExpectedEventQueue . Enqueue ( new ExpectedEvent ( )
230+ {
231+ IsSceneEvent = false ,
232+ ConnectionEvent = expectedEvent ,
233+ } ) ;
234+ }
235+
236236 private static void ValidateSceneEventsAreEqual ( ExpectedEvent expectedEvent , SceneEvent sceneEvent )
237237 {
238- Assert . NotNull ( expectedEvent . SceneEvent , $ "Received unexpected scene event { sceneEvent . SceneEventType } at index { s_NumEventsProcessed } ") ;
238+ Assert . That ( expectedEvent . IsSceneEvent , Is . True , $ "Received unexpected scene event { sceneEvent . SceneEventType } at index { s_NumEventsProcessed } . Expected connection event: { expectedEvent . ConnectionEvent . EventType } ") ;
239239 AssertField ( expectedEvent . SceneEvent . SceneEventType , sceneEvent . SceneEventType , nameof ( sceneEvent . SceneEventType ) , sceneEvent . SceneEventType ) ;
240240 AssertField ( expectedEvent . SceneEvent . ClientId , sceneEvent . ClientId , nameof ( sceneEvent . ClientId ) , sceneEvent . SceneEventType ) ;
241241 }
242242
243243 private static void ValidateConnectionEventsAreEqual ( ExpectedEvent expectedEvent , ConnectionEventData eventData )
244244 {
245- Assert . NotNull ( expectedEvent . ConnectionEvent , $ "Received unexpected connection event { eventData . EventType } at index { s_NumEventsProcessed } ") ;
245+ Assert . That ( expectedEvent . IsSceneEvent , Is . False , $ "Received unexpected connection event { eventData . EventType } at index { s_NumEventsProcessed } . Expected scene event: { expectedEvent . ConnectionEvent . EventType } ") ;
246246 AssertField ( expectedEvent . ConnectionEvent . EventType , eventData . EventType , nameof ( eventData . EventType ) , eventData . EventType ) ;
247247 AssertField ( expectedEvent . ConnectionEvent . ClientId , eventData . ClientId , nameof ( eventData . ClientId ) , eventData . EventType ) ;
248248
0 commit comments