1
- package bsptracer
1
+ package bsptracer_test
2
2
3
3
import (
4
4
"os"
5
5
"testing"
6
6
7
7
"github.com/go-gl/mathgl/mgl32"
8
8
"github.com/stretchr/testify/assert"
9
+
10
+ "github.com/saiko-tech/bsp-tracer/pkg/bsptracer"
9
11
)
10
12
11
- func TestBspTracer_NonExisting (t * testing.T ) {
12
- t .Parallel ()
13
+ // expects CS:GO to be installed in "$HOME/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive"
14
+ func csgoDir (tb testing.TB ) string {
15
+ tb .Helper ()
13
16
14
- _ , err := LoadMapFromFileSystem ("../../testdata/does_not_exist.bsp" )
15
- assert .NotNil (t , err )
17
+ userHome , err := os .UserHomeDir ()
18
+ assert .NoError (tb , err )
19
+
20
+ return userHome + "/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive"
16
21
}
17
22
18
- func TestBspTracer_BadFile (t * testing.T ) {
23
+ func TestBspTracer_NonExisting (t * testing.T ) {
19
24
t .Parallel ()
20
25
21
- _ , err := LoadMapFromFileSystem ("./map_test.go " )
26
+ _ , err := bsptracer . LoadMapFromFileSystem ("../../testdata/does_not_exist.bsp " )
22
27
assert .NotNil (t , err )
23
28
}
24
29
25
- func TestLoadMap_de_cache (t * testing.T ) {
30
+ func TestBspTracer_BadFile (t * testing.T ) {
26
31
t .Parallel ()
27
32
28
- m , err := LoadMapFromFileSystem ("../../testdata/de_cache.bsp" )
29
- assert .Error (t , err )
30
- assert .ErrorAs (t , err , new (MissingModelsError ))
31
-
32
- assert .Equal (t , 5560 , len (m .brushes ))
33
- assert .Equal (t , 39815 , len (m .brushSides ))
34
- assert .Equal (t , 129415 , len (m .edges ))
35
- assert .Equal (t , 24072 , len (m .leafBrushes ))
36
- assert .Equal (t , 18843 , len (m .leafFaces ))
37
- assert .Equal (t , 8906 , len (m .leaves ))
38
- assert .Equal (t , 8648 , len (m .nodes ))
39
- assert .Equal (t , 30626 , len (m .planes ))
40
- assert .Equal (t , 23221 , len (m .surfaces ))
41
- assert .Equal (t , 185200 , len (m .surfEdges ))
42
- assert .Equal (t , 48496 , len (m .vertices ))
43
- assert .Equal (t , 46442 , len (m .polygons ))
33
+ _ , err := bsptracer .LoadMapFromFileSystem ("./map_test.go" )
34
+ assert .NotNil (t , err )
44
35
}
45
36
46
37
func TestMap_TraceRay_de_cache (t * testing.T ) {
47
38
t .Parallel ()
48
39
49
- m , err := LoadMapFromFileSystem ("../../testdata/de_cache.bsp" )
50
- assert .Error (t , err )
51
- assert .ErrorAs (t , err , new (MissingModelsError ))
40
+ csgoDir := csgoDir (t )
41
+
42
+ m , err := bsptracer .LoadMapFromFileSystem ("../../testdata/de_cache.bsp" , csgoDir + "/csgo/pak01" , csgoDir + "/platform/platform_pak01" )
43
+ assert .NoError (t , err )
52
44
53
45
type args struct {
54
46
origin mgl32.Vec3
55
47
destination mgl32.Vec3
56
48
}
57
49
type out struct {
58
50
visible bool
59
- trace Trace
51
+ trace bsptracer. Trace
60
52
}
61
53
tests := []struct {
62
54
name string
@@ -71,55 +63,57 @@ func TestMap_TraceRay_de_cache(t *testing.T) {
71
63
},
72
64
want : out {
73
65
visible : true ,
74
- trace : Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {- 233 , 1343 , 1751 }},
66
+ trace : bsptracer. Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {- 233 , 1343 , 1751 }},
75
67
},
76
68
},
77
69
{
78
70
name : "T spawn -> A site" ,
79
71
args : args {
80
- mgl32.Vec3 {3306 , 431 , 1723 },
81
- mgl32.Vec3 {- 233 , 1343 , 1751 },
72
+ origin : mgl32.Vec3 {3306 , 431 , 1723 },
73
+ destination : mgl32.Vec3 {- 233 , 1343 , 1751 },
82
74
},
83
75
want : out {
84
76
visible : false ,
85
- trace : Trace {AllSolid : true , StartSolid : true , FractionLeftSolid : 1 , EndPos : mgl32.Vec3 {3306 , 431 , 1723 }, Contents : 1 , NumBrushSides : 7 },
77
+ trace : bsptracer. Trace {AllSolid : true , StartSolid : true , FractionLeftSolid : 1 , EndPos : mgl32.Vec3 {3306 , 431 , 1723 }, Contents : 1 , NumBrushSides : 7 },
86
78
},
87
79
},
88
80
{
89
81
name : "T spawn -> T spawn" ,
90
82
args : args {
91
- mgl32.Vec3 {3306 , 431 , 1723 },
92
- mgl32.Vec3 {3303 , 431 , 1723 },
83
+ origin : mgl32.Vec3 {3306 , 431 , 1723 },
84
+ destination : mgl32.Vec3 {3303 , 431 , 1723 },
93
85
},
94
86
want : out {
95
87
visible : true ,
96
- trace : Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {3303 , 431 , 1723 }},
88
+ trace : bsptracer. Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {3303 , 431 , 1723 }},
97
89
},
98
90
},
99
91
{
100
92
name : "through door" ,
101
93
args : args {
102
- mgl32.Vec3 {207 , 1948 , 1751 },
103
- mgl32.Vec3 {259 , 2251 , 1752 },
94
+ origin : mgl32.Vec3 {207 , 1948 , 1751 },
95
+ destination : mgl32.Vec3 {259 , 2251 , 1752 },
104
96
},
105
97
want : out {
106
- visible : true ,
107
- trace : Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {259 , 2251 , 1752 }},
98
+ visible : false ,
99
+ trace : bsptracer. Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {259 , 2251 , 1752 }},
108
100
},
109
101
},
110
102
{
111
103
name : "through mid box" ,
112
104
args : args {
113
- mgl32.Vec3 {- 94 , 452 , 1677 },
114
- mgl32.Vec3 {138 , 396 , 1677 },
105
+ origin : mgl32.Vec3 {- 94 , 452 , 1677 },
106
+ destination : mgl32.Vec3 {138 , 396 , 1677 },
115
107
},
116
108
want : out {
117
- visible : true ,
118
- trace : Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {138 , 396 , 1677 }},
109
+ visible : false ,
110
+ trace : bsptracer. Trace {AllSolid : true , StartSolid : true , Fraction : 1 , EndPos : mgl32.Vec3 {138 , 396 , 1677 }},
119
111
},
120
112
},
121
113
}
122
114
for _ , tt := range tests {
115
+ tt := tt
116
+
123
117
t .Run (tt .name , func (t * testing.T ) {
124
118
t .Parallel ()
125
119
@@ -133,15 +127,24 @@ func TestMap_TraceRay_de_cache(t *testing.T) {
133
127
}
134
128
}
135
129
136
- // expects CS:GO to be installed in "$HOME/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive"
137
130
func TestLoadMap_de_cache_with_models (t * testing.T ) {
138
131
t .Parallel ()
139
132
140
- userHome , err := os .UserHomeDir ()
133
+ csgoDir := csgoDir (t )
134
+
135
+ _ , err := bsptracer .LoadMapFromFileSystem ("../../testdata/de_cache.bsp" , csgoDir + "/csgo/pak01" , csgoDir + "/platform/platform_pak01" )
141
136
assert .NoError (t , err )
137
+ }
142
138
143
- csgoDir := userHome + "/games/SteamLibrary/steamapps/common/Counter-Strike Global Offensive"
139
+ func BenchmarkTraceBox (b * testing.B ) {
140
+ csgoDir := csgoDir (b )
144
141
145
- _ , err = LoadMapFromFileSystem ("../../testdata/de_cache.bsp" , csgoDir + "/csgo/pak01" , csgoDir + "/platform/platform_pak01" )
146
- assert .NoError (t , err )
142
+ m , err := bsptracer .LoadMapFromFileSystem ("../../testdata/de_cache.bsp" , csgoDir + "/csgo/pak01" , csgoDir + "/platform/platform_pak01" )
143
+ assert .NoError (b , err )
144
+
145
+ b .ResetTimer ()
146
+
147
+ for i := 0 ; i < b .N ; i ++ {
148
+ assert .False (b , m .IsVisible (mgl32.Vec3 {- 94 , 452 , 1677 }, mgl32.Vec3 {138 , 396 , 1677 }))
149
+ }
147
150
}
0 commit comments