@@ -67,7 +67,50 @@ func TestParser_BindNewPlayer_Issue98_Reconnect(t *testing.T) {
6767 p .bindNewPlayer (player )
6868
6969 assert .Len (t , p .GameState ().Participants ().All (), 1 )
70+ }
71+
72+ func TestParser_BindNewPlayer_PlayerSpotted_Under32 (t * testing.T ) {
73+ testPlayerSpotted (t , "m_bSpottedByMask.000" )
74+ }
75+ func TestParser_BindNewPlayer_PlayerSpotted_Over32 (t * testing.T ) {
76+ testPlayerSpotted (t , "m_bSpottedByMask.001" )
77+ }
78+
79+ func testPlayerSpotted (t * testing.T , propName string ) {
80+ p := newParser ()
81+
82+ p .rawPlayers = map [int ]* playerInfo {
83+ 0 : {
84+ userID : 2 ,
85+ name : "Spotter" ,
86+ guid : "123" ,
87+ xuid : 1 ,
88+ },
89+ }
90+
91+ // TODO: Player interface so we don't have to mock all this
92+ spotted := new (fakest.Entity )
93+ spottedByProp0 := new (fakest.Property )
94+ var spottedByUpdateHandler st.PropertyUpdateHandler
95+ spottedByProp0 .On ("OnUpdate" , mock .Anything ).Run (func (args mock.Arguments ) {
96+ spottedByUpdateHandler = args .Get (0 ).(st.PropertyUpdateHandler )
97+ })
98+ spotted .On ("FindPropertyI" , propName ).Return (spottedByProp0 )
99+ configurePlayerEntityMock (1 , spotted )
100+ p .bindNewPlayer (spotted )
101+
102+ var actual events.PlayerSpottersChanged
103+ p .RegisterEventHandler (func (e events.PlayerSpottersChanged ) {
104+ actual = e
105+ })
70106
107+ spottedByUpdateHandler (st.PropertyValue {IntVal : 1 })
108+
109+ expected := events.PlayerSpottersChanged {
110+ Spotted : p .gameState .playersByEntityID [1 ],
111+ }
112+ assert .NotNil (t , expected .Spotted )
113+ assert .Equal (t , expected , actual )
71114}
72115
73116func newParser () * Parser {
@@ -76,18 +119,22 @@ func newParser() *Parser {
76119 return p
77120}
78121
79- func fakePlayerEntity (id int ) st. IEntity {
122+ func fakePlayerEntity (id int ) * fakest. Entity {
80123 entity := new (fakest.Entity )
124+ configurePlayerEntityMock (id , entity )
125+ return entity
126+ }
127+
128+ func configurePlayerEntityMock (id int , entity * fakest.Entity ) {
81129 entity .On ("ID" ).Return (id )
82130 var destroyCallback func ()
83131 entity .On ("OnDestroy" , mock .Anything ).Run (func (args mock.Arguments ) {
84132 destroyCallback = args .Get (0 ).(func ())
85133 })
86134 entity .On ("OnPositionUpdate" , mock .Anything ).Return ()
87135 entity .On ("FindPropertyI" , mock .Anything ).Return (new (st.Property ))
88- entity .On ("BindProperty" , mock .Anything , mock .Anything , mock .Anything ). Return ( new (st. Property ))
136+ entity .On ("BindProperty" , mock .Anything , mock .Anything , mock .Anything )
89137 entity .On ("Destroy" ).Run (func (mock.Arguments ) {
90138 destroyCallback ()
91139 })
92- return entity
93140}
0 commit comments