From 50b1819fbccbe198eafe3ed0893bfe534e7e2425 Mon Sep 17 00:00:00 2001 From: AkiVer Date: Sun, 12 Nov 2023 15:03:04 +0100 Subject: [PATCH] feat: add s2 velocity test --- pkg/demoinfocs/common/common_test.go | 3 ++- pkg/demoinfocs/common/player_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pkg/demoinfocs/common/common_test.go b/pkg/demoinfocs/common/common_test.go index 2182379f..5fac082a 100644 --- a/pkg/demoinfocs/common/common_test.go +++ b/pkg/demoinfocs/common/common_test.go @@ -213,13 +213,14 @@ type demoInfoProviderMock struct { tickRate float64 ingameTick int playersByHandle map[int]*Player + entitiesByHandle map[uint64]st.Entity playerResourceEntity st.Entity equipment *Equipment isSource2 bool } func (p demoInfoProviderMock) FindEntityByHandle(handle uint64) st.Entity { - panic("implement me") + return p.entitiesByHandle[handle] } func (p demoInfoProviderMock) IsSource2() bool { diff --git a/pkg/demoinfocs/common/player_test.go b/pkg/demoinfocs/common/player_test.go index a9e2f397..9767eda2 100644 --- a/pkg/demoinfocs/common/player_test.go +++ b/pkg/demoinfocs/common/player_test.go @@ -428,6 +428,31 @@ func TestPlayer_Velocity(t *testing.T) { assert.Equal(t, expected, pl.Velocity()) } +func TestPlayer_VelocityS2(t *testing.T) { + controllerEntity := entityWithProperties([]fakeProp{ + {propName: "m_hPlayerPawn", value: st.PropertyValue{Any: uint64(1), S2: true}}, + }) + pawnEntity := entityWithProperties([]fakeProp{ + {propName: "m_iHealth", value: st.PropertyValue{Any: int32(100), S2: true}}, + }) + + pl := &Player{ + Entity: controllerEntity, + } + + demoInfoProvider := demoInfoProviderMock{ + isSource2: true, + entitiesByHandle: map[uint64]st.Entity{ + 1: pawnEntity, + }, + } + pl.LastPositions = []r3.Vector{{X: 10, Y: 200, Z: 0}, {X: 20, Y: 300, Z: 0}} + pl.demoInfoProvider = demoInfoProvider + + expected := r3.Vector{X: 640, Y: 6400, Z: 0} + assert.Equal(t, expected, pl.Velocity()) +} + func TestPlayer_Velocity_EntityNil(t *testing.T) { pl := new(Player) pl.demoInfoProvider = s1DemoInfoProvider