Skip to content

Commit 6f8a996

Browse files
committed
Test more public functions
- Replaced default.dem with a demo that has team flags (so we can test if those get parsed correctly) - Documented upper/lower-case weirdness of team flags
1 parent c21afef commit 6f8a996

File tree

5 files changed

+55
-23
lines changed

5 files changed

+55
-23
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,16 @@ func main() {
5454

5555
// Register handler on round end to figure out who won
5656
p.RegisterEventHandler(func(e events.RoundEndedEvent) {
57+
gs := p.GameState()
5758
switch e.Winner {
5859
case common.TeamTerrorists:
59-
fmt.Println("T-side won the round - score:", p.GameState().TState().Score()+1) // Score + 1 because it hasn't actually been updated yet
60+
// Winner's score + 1 because it hasn't actually been updated yet
61+
fmt.Printf("Round finished: winnerSide=T ; score=%d:%d\n", gs.TState().Score()+1, gs.CTState().Score())
6062
case common.TeamCounterTerrorists:
61-
fmt.Println("CT-side won the round - score:", p.GameState().CTState().Score()+1)
63+
fmt.Printf("Round finished: winnerSide=CT ; score=%d:%d\n", gs.CTState().Score()+1, gs.TState().Score())
6264
default:
63-
fmt.Println("Apparently neither the Ts nor CTs won the round, interesting")
65+
// Probably match medic or something similar
66+
fmt.Println("Round finished: No winner (tie)")
6467
}
6568
})
6669

demoinfocs_test.go

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
dem "github.com/markus-wa/demoinfocs-golang"
15+
common "github.com/markus-wa/demoinfocs-golang/common"
1516
events "github.com/markus-wa/demoinfocs-golang/events"
1617
)
1718

@@ -40,21 +41,43 @@ func TestDemoInfoCs(t *testing.T) {
4041
if err != nil {
4142
t.Fatal(err)
4243
}
43-
fmt.Printf("Header: %v\n", h)
44+
fmt.Printf("Header: %v - FrameRate()=%.2f frames/s ; FrameTime()=%.1fms\n", h, h.FrameRate(), h.FrameTime()*1000)
45+
h2 := p.Header()
46+
if h != h2 {
47+
t.Errorf("Headers returned by ParseHeader() & Header(), respectively, aren't equal; ParseHeader(): %v - Header(): %v", h, h2)
48+
}
4449

4550
fmt.Println("Registering handlers")
46-
tState := p.GameState().TState()
47-
ctState := p.GameState().CTState()
48-
var oldTScore, oldCtScore int
49-
p.RegisterEventHandler(func(events.TickDoneEvent) {
50-
newTScore := tState.Score()
51-
newCtScore := ctState.Score()
52-
if oldTScore != newTScore {
53-
fmt.Println("T-side score:", newTScore)
54-
oldTScore = newTScore
55-
} else if ctState != nil && oldCtScore != newCtScore {
56-
fmt.Println("CT-side score:", newCtScore)
57-
oldCtScore = newCtScore
51+
p.RegisterEventHandler(func(e events.RoundEndedEvent) {
52+
gs := p.GameState()
53+
var winner *dem.TeamState
54+
var loser *dem.TeamState
55+
var winnerSide string
56+
switch e.Winner {
57+
case common.TeamTerrorists:
58+
winner = gs.TState()
59+
loser = gs.CTState()
60+
winnerSide = "T"
61+
case common.TeamCounterTerrorists:
62+
winner = gs.CTState()
63+
loser = gs.TState()
64+
winnerSide = "CT"
65+
default:
66+
// Probably match medic or something similar
67+
fmt.Println("Round finished: No winner (tie)")
68+
return
69+
}
70+
winnerClan := winner.ClanName()
71+
winnerId := winner.ID()
72+
winnerFlag := winner.Flag()
73+
ingameTime := p.CurrentTime()
74+
progressPercent := p.Progress() * 100
75+
ingameTick := gs.IngameTick()
76+
currentFrame := p.CurrentFrame()
77+
// Score + 1 for winner because it hasn't actually been updated yet
78+
fmt.Printf("Round finished: score=%d:%d ; winnerSide=%s ; clanName=%q ; teamId=%d ; teamFlag=%s ; ingameTime=%.1fs ; progress=%.1f%% ; tick=%d ; frame=%d\n", winner.Score()+1, loser.Score(), winnerSide, winnerClan, winnerId, winnerFlag, ingameTime, progressPercent, ingameTick, currentFrame)
79+
if len(winnerClan) == 0 || winnerId == 0 || len(winnerFlag) == 0 || ingameTime == 0 || progressPercent == 0 || ingameTick == 0 || currentFrame == 0 {
80+
t.Error("Unexprected default value, check output of last round")
5881
}
5982
})
6083

@@ -201,19 +224,21 @@ func TestDemoSet(t *testing.T) {
201224
defer func() {
202225
pErr := recover()
203226
if pErr != nil {
204-
t.Errorf("Failed to parse '%s/%s' - %s\n", demSetPath, name, pErr)
227+
t.Errorf("Failed to parse '%s/%s': %s\n", demSetPath, name, pErr)
205228
}
206229
}()
207230

208231
p := dem.NewParser(f, nil)
209232
_, err = p.ParseHeader()
210233
if err != nil {
211-
t.Fatal(err)
234+
t.Error(err)
235+
return
212236
}
213237

214238
err = p.ParseToEnd()
215239
if err != nil {
216-
t.Fatal(err)
240+
t.Error(err)
241+
return
217242
}
218243
}()
219244
}

example_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@ func TestExample(t *testing.T) {
2929

3030
// Register handler on round end to figure out who won
3131
p.RegisterEventHandler(func(e events.RoundEndedEvent) {
32+
gs := p.GameState()
3233
switch e.Winner {
3334
case common.TeamTerrorists:
34-
fmt.Println("T-side won the round - score:", p.GameState().TState().Score()+1) // Score + 1 because it hasn't actually been updated yet
35+
// Winner's score + 1 because it hasn't actually been updated yet
36+
fmt.Printf("Round finished: winnerSide=T ; score=%d:%d\n", gs.TState().Score()+1, gs.CTState().Score())
3537
case common.TeamCounterTerrorists:
36-
fmt.Println("CT-side won the round - score:", p.GameState().CTState().Score()+1)
38+
fmt.Printf("Round finished: winnerSide=CT ; score=%d:%d\n", gs.CTState().Score()+1, gs.TState().Score())
3739
default:
38-
fmt.Println("Apparently neither the Ts nor CTs won the round, interesting")
40+
// Probably match medic or something similar
41+
fmt.Println("Round finished: No winner (tie)")
3942
}
4043
})
4144

game_state.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func (ts TeamState) ClanName() string {
8888
}
8989

9090
// Flag returns the team's country flag.
91+
// Watch out, in some demos this is upper-case and in some lower-case.
9192
func (ts TeamState) Flag() string {
9293
return ts.flag
9394
}

test/cs-demos

Submodule cs-demos updated from 4c25c34 to f5ba36a

0 commit comments

Comments
 (0)