Skip to content

Commit 76733a6

Browse files
committed
s2 test fixes
1 parent 3ec2c75 commit 76733a6

File tree

7 files changed

+151
-45
lines changed

7 files changed

+151
-45
lines changed

pkg/demoinfocs/common/common_test.go

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ import (
1212
stfake "github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/sendtables/fake"
1313
)
1414

15+
var s1DemoInfoProvider = demoInfoProviderMock{
16+
isSource2: false,
17+
}
18+
1519
func TestBombPosition(t *testing.T) {
1620
groundPos := r3.Vector{X: 1, Y: 2, Z: 3}
1721
bomb := Bomb{
@@ -91,7 +95,16 @@ func TestTeamState_EquipmentValueCurrent(t *testing.T) {
9195
playerWithProperty("m_unCurrentEquipmentValue", st.PropertyValue{IntVal: 100}),
9296
playerWithProperty("m_unCurrentEquipmentValue", st.PropertyValue{IntVal: 200}),
9397
}
94-
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, demoInfoProviderMock{})
98+
99+
dip := demoInfoProviderMock{
100+
isSource2: false,
101+
}
102+
103+
for _, p := range members {
104+
p.demoInfoProvider = dip
105+
}
106+
107+
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, dip)
95108

96109
assert.Equal(t, 300, state.CurrentEquipmentValue())
97110
}
@@ -101,7 +114,16 @@ func TestTeamState_EquipmentValueRoundStart(t *testing.T) {
101114
playerWithProperty("m_unRoundStartEquipmentValue", st.PropertyValue{IntVal: 100}),
102115
playerWithProperty("m_unRoundStartEquipmentValue", st.PropertyValue{IntVal: 200}),
103116
}
104-
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, demoInfoProviderMock{})
117+
118+
dip := demoInfoProviderMock{
119+
isSource2: false,
120+
}
121+
122+
for _, p := range members {
123+
p.demoInfoProvider = dip
124+
}
125+
126+
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, dip)
105127

106128
assert.Equal(t, 300, state.RoundStartEquipmentValue())
107129
}
@@ -111,7 +133,16 @@ func TestTeamState_EquipmentValueFreezeTimeEnd(t *testing.T) {
111133
playerWithProperty("m_unFreezetimeEndEquipmentValue", st.PropertyValue{IntVal: 100}),
112134
playerWithProperty("m_unFreezetimeEndEquipmentValue", st.PropertyValue{IntVal: 200}),
113135
}
114-
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, demoInfoProviderMock{})
136+
137+
dip := demoInfoProviderMock{
138+
isSource2: false,
139+
}
140+
141+
for _, p := range members {
142+
p.demoInfoProvider = dip
143+
}
144+
145+
state := NewTeamState(TeamTerrorists, func(Team) []*Player { return members }, dip)
115146

116147
assert.Equal(t, 300, state.FreezeTimeEndEquipmentValue())
117148
}
@@ -175,6 +206,7 @@ func TestConvertSteamID64To32(t *testing.T) {
175206
type fakeProp struct {
176207
propName string
177208
value st.PropertyValue
209+
isNil bool
178210
}
179211

180212
type demoInfoProviderMock struct {
@@ -251,6 +283,12 @@ func entityWithProperties(properties []fakeProp) *stfake.Entity {
251283
entity.On("Property", mock.Anything).Return(nil)
252284

253285
for _, prop := range properties {
286+
if prop.isNil {
287+
entity.On("Property", prop.propName).Return(nil)
288+
289+
continue
290+
}
291+
254292
property := new(stfake.Property)
255293
property.On("Value").Return(prop.value)
256294

pkg/demoinfocs/common/equipment.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,10 @@ func (e *Equipment) ZoomLevel() ZoomLevel {
401401
// Returns CWeaponCSBase.m_iPrimaryReserveAmmoCount for most weapons and 'Owner.AmmoLeft[AmmoType] - 1' for grenades.
402402
// Use AmmoInMagazine() + AmmoReserve() to quickly get the amount of grenades a player owns.
403403
func (e *Equipment) AmmoReserve() int {
404+
if e.Entity == nil {
405+
return 0
406+
}
407+
404408
if e.Class() == EqClassGrenade {
405409
s2Prop := e.Entity.Property("m_pReserveAmmo.0001")
406410
if s2Prop != nil {
@@ -422,10 +426,6 @@ func (e *Equipment) AmmoReserve() int {
422426
return 0
423427
}
424428

425-
if e.Entity == nil {
426-
return 0
427-
}
428-
429429
// if the property doesn't exist we return 0 by default
430430
val, _ := e.Entity.PropertyValue("m_iPrimaryReserveAmmoCount")
431431

pkg/demoinfocs/common/equipment_test.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func TestEquipment_UniqueID(t *testing.T) {
4141
func TestEquipment_AmmoInMagazine(t *testing.T) {
4242
wep := &Equipment{
4343
Type: EqAK47,
44-
Entity: entityWithProperty("m_iClip1", st.PropertyValue{IntVal: 31}),
44+
Entity: entityWithProperty("m_iClip1", st.PropertyValue{IntVal: 31, Any: uint32(30)}),
4545
}
4646

4747
// returned value should be minus 1, m_iClip1 is always 1 more than the actual number of bullets
@@ -78,7 +78,18 @@ func TestEquipment_AmmoInMagazine_EntityNil(t *testing.T) {
7878
}
7979

8080
func TestEquipment_AmmoReserve(t *testing.T) {
81-
entity := entityWithProperty("m_iPrimaryReserveAmmoCount", st.PropertyValue{IntVal: 60})
81+
entity := entityWithProperties([]fakeProp{
82+
{
83+
propName: "m_pReserveAmmo.0000",
84+
value: st.PropertyValue{},
85+
isNil: true,
86+
},
87+
{
88+
propName: "m_iPrimaryReserveAmmoCount",
89+
value: st.PropertyValue{IntVal: 60},
90+
isNil: false,
91+
},
92+
})
8293
wep := &Equipment{
8394
Type: EqAK47,
8495
Entity: entity,
@@ -91,7 +102,18 @@ func TestEquipment_AmmoReserve_Grenade(t *testing.T) {
91102
owner := new(Player)
92103
owner.AmmoLeft[1] = 2
93104

94-
entity := entityWithProperty("LocalWeaponData.m_iPrimaryAmmoType", st.PropertyValue{IntVal: 1})
105+
entity := entityWithProperties([]fakeProp{
106+
{
107+
propName: "m_pReserveAmmo.0001",
108+
value: st.PropertyValue{},
109+
isNil: true,
110+
},
111+
{
112+
propName: "LocalWeaponData.m_iPrimaryAmmoType",
113+
value: st.PropertyValue{IntVal: 1},
114+
isNil: false,
115+
},
116+
})
95117
wep := &Equipment{
96118
Type: EqFlash,
97119
Owner: owner,

pkg/demoinfocs/common/player_test.go

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ func TestPlayer_FlashDurationTimeRemaining_Fallback(t *testing.T) {
140140
func TestPlayer_IsSpottedBy_HasSpotted_True(t *testing.T) {
141141
pl := playerWithProperty("m_bSpottedByMask.000", st.PropertyValue{IntVal: 2})
142142
pl.EntityID = 1
143+
pl.demoInfoProvider = s1DemoInfoProvider
143144

144145
other := newPlayer(0)
145146
other.EntityID = 2
@@ -150,6 +151,7 @@ func TestPlayer_IsSpottedBy_HasSpotted_True(t *testing.T) {
150151

151152
func TestPlayer_IsSpottedBy_HasSpotted_False(t *testing.T) {
152153
pl := playerWithProperty("m_bSpottedByMask.000", st.PropertyValue{IntVal: 0})
154+
pl.demoInfoProvider = s1DemoInfoProvider
153155
pl.EntityID = 1
154156

155157
other := newPlayer(0)
@@ -161,6 +163,7 @@ func TestPlayer_IsSpottedBy_HasSpotted_False(t *testing.T) {
161163

162164
func TestPlayer_IsSpottedBy_HasSpotted_BitOver32(t *testing.T) {
163165
pl := playerWithProperty("m_bSpottedByMask.001", st.PropertyValue{IntVal: 1})
166+
pl.demoInfoProvider = s1DemoInfoProvider
164167
pl.EntityID = 1
165168

166169
other := newPlayer(0)
@@ -182,67 +185,78 @@ func TestPlayer_IsSpottedBy_EntityNull(t *testing.T) {
182185

183186
func TestPlayer_IsInBombZone(t *testing.T) {
184187
pl := playerWithProperty("m_bInBombZone", st.PropertyValue{IntVal: 1})
188+
pl.demoInfoProvider = s1DemoInfoProvider
185189

186190
assert.True(t, pl.IsInBombZone())
187191
}
188192

189193
func TestPlayer_IsInBuyZone(t *testing.T) {
190194
pl := playerWithProperty("m_bInBuyZone", st.PropertyValue{IntVal: 1})
195+
pl.demoInfoProvider = s1DemoInfoProvider
191196

192197
assert.True(t, pl.IsInBuyZone())
193198
}
194199

195200
func TestPlayer_IsWalking(t *testing.T) {
196201
pl := playerWithProperty("m_bIsWalking", st.PropertyValue{IntVal: 1})
202+
pl.demoInfoProvider = s1DemoInfoProvider
197203

198204
assert.True(t, pl.IsWalking())
199205
}
200206

201207
func TestPlayer_IsScoped(t *testing.T) {
202208
pl := playerWithProperty("m_bIsScoped", st.PropertyValue{IntVal: 1})
209+
pl.demoInfoProvider = s1DemoInfoProvider
203210

204211
assert.True(t, pl.IsScoped())
205212
}
206213

207214
func TestPlayer_IsAirborne_NilEntity(t *testing.T) {
208215
pl := new(Player)
216+
pl.demoInfoProvider = s1DemoInfoProvider
209217

210218
assert.False(t, pl.IsAirborne())
211219
}
212220

213221
func TestPlayer_IsAirborne(t *testing.T) {
214222
pl := playerWithProperty("m_hGroundEntity", st.PropertyValue{IntVal: 0})
223+
pl.demoInfoProvider = s1DemoInfoProvider
215224

216225
assert.False(t, pl.IsAirborne())
217226

218227
pl = playerWithProperty("m_hGroundEntity", st.PropertyValue{IntVal: 2097151})
228+
pl.demoInfoProvider = s1DemoInfoProvider
219229

220230
assert.True(t, pl.IsAirborne())
221231
}
222232

223233
func TestPlayer_IsDucking(t *testing.T) {
224234
pl := playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 0})
235+
pl.demoInfoProvider = s1DemoInfoProvider
225236

226237
assert.False(t, pl.IsDucking())
227238
assert.True(t, pl.IsStanding())
228239
assert.False(t, pl.IsDuckingInProgress())
229240
assert.False(t, pl.IsUnDuckingInProgress())
230241

231242
pl = playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 1 << 1})
243+
pl.demoInfoProvider = s1DemoInfoProvider
232244

233245
assert.False(t, pl.IsDucking())
234246
assert.False(t, pl.IsStanding())
235247
assert.False(t, pl.IsDuckingInProgress())
236248
assert.True(t, pl.IsUnDuckingInProgress())
237249

238250
pl = playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 1 << 2})
251+
pl.demoInfoProvider = s1DemoInfoProvider
239252

240253
assert.False(t, pl.IsDucking())
241254
assert.False(t, pl.IsStanding())
242255
assert.True(t, pl.IsDuckingInProgress())
243256
assert.False(t, pl.IsUnDuckingInProgress())
244257

245258
pl = playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 1<<1 | 1<<2})
259+
pl.demoInfoProvider = s1DemoInfoProvider
246260

247261
assert.True(t, pl.IsDucking())
248262
assert.False(t, pl.IsStanding())
@@ -252,46 +266,55 @@ func TestPlayer_IsDucking(t *testing.T) {
252266

253267
func TestPlayerFlags_OnGround(t *testing.T) {
254268
pl := playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 0})
269+
pl.demoInfoProvider = s1DemoInfoProvider
255270

256271
assert.False(t, pl.Flags().OnGround())
257272

258273
pl = playerWithProperty("m_fFlags", st.PropertyValue{IntVal: 1})
274+
pl.demoInfoProvider = s1DemoInfoProvider
259275

260276
assert.True(t, pl.Flags().OnGround())
261277
}
262278

263279
func TestPlayer_HasDefuseKit(t *testing.T) {
264280
pl := playerWithProperty("m_bHasDefuser", st.PropertyValue{IntVal: 0})
281+
pl.demoInfoProvider = s1DemoInfoProvider
265282

266283
assert.False(t, pl.HasDefuseKit())
267284

268285
pl = playerWithProperty("m_bHasDefuser", st.PropertyValue{IntVal: 1})
286+
pl.demoInfoProvider = s1DemoInfoProvider
269287

270288
assert.True(t, pl.HasDefuseKit())
271289
}
272290

273291
func TestPlayer_HasHelmet(t *testing.T) {
274292
pl := playerWithProperty("m_bHasHelmet", st.PropertyValue{IntVal: 0})
293+
pl.demoInfoProvider = s1DemoInfoProvider
275294

276295
assert.False(t, pl.HasHelmet())
277296

278297
pl = playerWithProperty("m_bHasHelmet", st.PropertyValue{IntVal: 1})
298+
pl.demoInfoProvider = s1DemoInfoProvider
279299

280300
assert.True(t, pl.HasHelmet())
281301
}
282302

283303
func TestPlayer_IsControllingBot_NilEntity(t *testing.T) {
284304
pl := new(Player)
305+
pl.demoInfoProvider = s1DemoInfoProvider
285306

286307
assert.False(t, pl.IsControllingBot())
287308
}
288309

289310
func TestPlayer_IsControllingBot(t *testing.T) {
290311
pl := playerWithProperty("m_bIsControllingBot", st.PropertyValue{IntVal: 0})
312+
pl.demoInfoProvider = s1DemoInfoProvider
291313

292314
assert.False(t, pl.IsControllingBot())
293315

294316
pl = playerWithProperty("m_bIsControllingBot", st.PropertyValue{IntVal: 1})
317+
pl.demoInfoProvider = s1DemoInfoProvider
295318

296319
assert.True(t, pl.IsControllingBot())
297320
}
@@ -335,18 +358,21 @@ func TestPlayer_Armor(t *testing.T) {
335358

336359
func TestPlayer_Money(t *testing.T) {
337360
pl := playerWithProperty("m_iAccount", st.PropertyValue{IntVal: 800})
361+
pl.demoInfoProvider = s1DemoInfoProvider
338362

339363
assert.Equal(t, 800, pl.Money())
340364
}
341365

342366
func TestPlayer_ViewDirectionX(t *testing.T) {
343367
pl := playerWithProperty("m_angEyeAngles[1]", st.PropertyValue{FloatVal: 180})
368+
pl.demoInfoProvider = s1DemoInfoProvider
344369

345370
assert.Equal(t, float32(180), pl.ViewDirectionX())
346371
}
347372

348373
func TestPlayer_ViewDirectionY(t *testing.T) {
349374
pl := playerWithProperty("m_angEyeAngles[0]", st.PropertyValue{FloatVal: 15})
375+
pl.demoInfoProvider = s1DemoInfoProvider
350376

351377
assert.Equal(t, float32(15), pl.ViewDirectionY())
352378
}
@@ -358,12 +384,14 @@ func TestPlayer_Position(t *testing.T) {
358384
entity.On("Position").Return(pos)
359385

360386
pl := &Player{Entity: entity}
387+
pl.demoInfoProvider = s1DemoInfoProvider
361388

362389
assert.Equal(t, pos, pl.Position())
363390
}
364391

365392
func TestPlayer_Position_EntityNil(t *testing.T) {
366393
pl := new(Player)
394+
pl.demoInfoProvider = s1DemoInfoProvider
367395

368396
assert.Empty(t, pl.Position())
369397
}
@@ -375,6 +403,7 @@ func TestPlayer_PositionEyes(t *testing.T) {
375403
entity.On("Position").Return(pos)
376404

377405
pl := &Player{Entity: entity}
406+
pl.demoInfoProvider = s1DemoInfoProvider
378407

379408
assert.Equal(t, r3.Vector{X: 1, Y: 2, Z: 5}, pl.PositionEyes())
380409
}
@@ -392,19 +421,25 @@ func TestPlayer_Velocity(t *testing.T) {
392421
entity.On("PropertyValueMust", "localdata.m_vecVelocity[2]").Return(st.PropertyValue{FloatVal: 3})
393422

394423
pl := &Player{Entity: entity}
424+
pl.demoInfoProvider = s1DemoInfoProvider
395425

396426
expected := r3.Vector{X: 1, Y: 2, Z: 3}
397427
assert.Equal(t, expected, pl.Velocity())
398428
}
399429

400430
func TestPlayer_Velocity_EntityNil(t *testing.T) {
401431
pl := new(Player)
432+
pl.demoInfoProvider = s1DemoInfoProvider
402433

403434
assert.Empty(t, pl.Velocity())
404435
}
405436

406437
func TestPlayer_ClanTag(t *testing.T) {
407-
pl := playerWithResourceProperty("m_szClan", st.PropertyValue{StringVal: "SuperClan"})
438+
pl := playerWithResourceProperty("m_szClan", st.PropertyValue{Any: "SuperClan"})
439+
pl.demoInfoProvider = demoInfoProviderMock{
440+
playerResourceEntity: (pl.demoInfoProvider.(demoInfoProviderMock)).playerResourceEntity,
441+
isSource2: false,
442+
}
408443

409444
assert.Equal(t, "SuperClan", pl.ClanTag())
410445
}
@@ -520,7 +555,8 @@ func TestPlayer_SteamID32(t *testing.T) {
520555
}
521556

522557
func TestPlayer_LastPlaceName(t *testing.T) {
523-
pl := playerWithProperty("m_szLastPlaceName", st.PropertyValue{StringVal: "TopofMid"})
558+
pl := playerWithProperty("m_szLastPlaceName", st.PropertyValue{Any: "TopofMid"})
559+
pl.demoInfoProvider = s1DemoInfoProvider
524560

525561
assert.Equal(t, "TopofMid", pl.LastPlaceName())
526562
}

0 commit comments

Comments
 (0)