@@ -41,17 +41,31 @@ func TestGameState_Participants(t *testing.T) {
4141 ptcp := gs .Participants ()
4242 byEntity := ptcp .ByEntityID ()
4343 byUserID := ptcp .ByUserID ()
44+ allByUserID := ptcp .AllByUserID ()
4445
4546 // Should update ptcp as well since it uses the same map
4647 gs .playersByEntityID [0 ] = newPlayer ()
4748 gs .playersByUserID [0 ] = newPlayer ()
4849
4950 assert .Equal (t , gs .playersByEntityID , ptcp .ByEntityID ())
5051 assert .Equal (t , gs .playersByUserID , ptcp .ByUserID ())
52+ assert .Equal (t , gs .playersByUserID , ptcp .AllByUserID ())
5153
5254 // But should not update byEntity or byUserID since they're copies
5355 assert .NotEqual (t , byEntity , ptcp .ByEntityID ())
54- assert .NotEqual (t , byUserID , ptcp .ByUserID ())
56+ byUserID2 := ptcp .ByUserID ()
57+ assert .NotEqual (t , byUserID , byUserID2 )
58+ assert .Equal (t , gs .playersByUserID , ptcp .AllByUserID ())
59+
60+ gs .playersByEntityID [1 ] = newDisconnectedPlayer ()
61+ gs .playersByUserID [1 ] = newDisconnectedPlayer ()
62+
63+ assert .Equal (t , gs .playersByUserID , ptcp .AllByUserID ())
64+
65+ assert .NotEqual (t , byEntity , ptcp .ByEntityID ())
66+ // Should be equal since ByUserID() do not return disconnected users
67+ assert .Equal (t , byUserID2 , ptcp .ByUserID ())
68+ assert .NotEqual (t , allByUserID , ptcp .ByUserID ())
5569}
5670
5771func TestGameState_ConVars (t * testing.T ) {
@@ -264,5 +278,13 @@ func newPlayer() *common.Player {
264278 pl := common .NewPlayer (nil )
265279 pl .Entity = new (st.Entity )
266280 pl .IsConnected = true
281+
282+ return pl
283+ }
284+
285+ func newDisconnectedPlayer () * common.Player {
286+ pl := common .NewPlayer (nil )
287+ pl .Entity = new (st.Entity )
288+
267289 return pl
268290}
0 commit comments