package tests

import (
	"testing"

	"github.com/akiver/cs-demo-analyzer/pkg/api"
	"github.com/akiver/cs-demo-analyzer/pkg/api/constants"
	"github.com/akiver/cs-demo-analyzer/tests/assertion"
	"github.com/akiver/cs-demo-analyzer/tests/fake"
	"github.com/akiver/cs-demo-analyzer/tests/testsutils"
)

// ESEA demo with warmup, half time break, coaches and pauses at freeze time.
// https://www.hltv.org/stats/matches/mapstatsid/46797/clg-vs-liquid
func TestEsea_CLG_VS_Liquid_IEM_Cologne_2017_Cbble(t *testing.T) {
	demoName := "esea_clg_vs_liquid_iem_cologne_2017_cbble"
	demoPath := testsutils.GetDemoPath("csgo", demoName)
	match, err := api.AnalyzeDemo(demoPath, api.AnalyzeDemoOptions{
		Source: constants.DemoSourceESEA,
	})
	if err != nil {
		t.Error(err)
	}

	expectedRoundCount := 30
	expectedPlayerCount := 10
	expectedScoreTeamA := 14
	expectedScoreTeamB := 16
	expectedScoreFirstHalfTeamA := 10
	expectedScoreFirstHalfTeamB := 5
	expectedScoreSecondHalfTeamA := 4
	expectedScoreSecondHalfTeamB := 11
	expectedTeamNameA := "Counter Logic Gaming"
	expectedTeamNameB := "Team Liquid"
	expectedWinnerName := expectedTeamNameB
	expectedMaxRounds := 30

	if len(match.Rounds) != expectedRoundCount {
		t.Errorf("expected %d rounds but got %d", expectedRoundCount, len(match.Rounds))
	}
	if len(match.Players()) != expectedPlayerCount {
		t.Errorf("expected %d players but got %d", expectedPlayerCount, len(match.Players()))
	}
	if match.TeamA.Score != expectedScoreTeamA {
		t.Errorf("expected score team A to be %d got %d", expectedScoreTeamA, match.TeamA.Score)
	}
	if match.TeamB.Score != expectedScoreTeamB {
		t.Errorf("expected score team B to be %d got %d", expectedScoreTeamB, match.TeamB.Score)
	}
	if match.TeamA.Name != expectedTeamNameA {
		t.Errorf("expected team name A to be %s got %s", expectedTeamNameA, match.TeamA.Name)
	}
	if match.TeamB.Name != expectedTeamNameB {
		t.Errorf("expected team name B to be %s got %s", expectedTeamNameB, match.TeamB.Name)
	}
	if match.TeamA.ScoreFirstHalf != expectedScoreFirstHalfTeamA {
		t.Errorf("expected score first half team A to be %d got %d", expectedScoreFirstHalfTeamA, match.TeamA.ScoreFirstHalf)
	}
	if match.TeamB.ScoreFirstHalf != expectedScoreFirstHalfTeamB {
		t.Errorf("expected score first half team B to be %d got %d", expectedScoreFirstHalfTeamB, match.TeamB.ScoreFirstHalf)
	}
	if match.TeamA.ScoreSecondHalf != expectedScoreSecondHalfTeamA {
		t.Errorf("expected score second half team A to be %d got %d", expectedScoreSecondHalfTeamA, match.TeamA.ScoreSecondHalf)
	}
	if match.TeamB.ScoreSecondHalf != expectedScoreSecondHalfTeamB {
		t.Errorf("expected score second half team B to be %d got %d", expectedScoreSecondHalfTeamB, match.TeamB.ScoreSecondHalf)
	}
	if match.Winner.Name != expectedWinnerName {
		t.Errorf("expected winner to be %s but got %s", expectedWinnerName, match.Winner.Name)
	}
	if match.MaxRounds != expectedMaxRounds {
		t.Errorf("expected max rounds to be %d but got %d", expectedMaxRounds, match.MaxRounds)
	}

	var rounds = []fake.FakeRound{
		{
			Number:              1,
			StartTick:           14969,
			FreezeTimeEndTick:   16884,
			EndTick:             19384,
			EndOfficiallyTick:   20033,
			StartFrame:          7418,
			FreezeTimeEndFrame:  8373,
			EndFrame:            9617,
			EndOfficiallyFrame:  9938,
			TeamAStartMoney:     4000,
			TeamBStartMoney:     4000,
			TeamAEquipmentValue: 4300,
			TeamBEquipmentValue: 4250,
			TeamAEconomyType:    constants.EconomyTypePistol,
			TeamBEconomyType:    constants.EconomyTypePistol,
			TeamAScore:          1,
			TeamBScore:          0,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              2,
			StartTick:           20033,
			FreezeTimeEndTick:   21947,
			EndTick:             31466,
			EndOfficiallyTick:   32116,
			StartFrame:          9938,
			FreezeTimeEndFrame:  10892,
			EndFrame:            15644,
			EndOfficiallyFrame:  15966,
			TeamAStartMoney:     18450,
			TeamBStartMoney:     8150,
			TeamAEquipmentValue: 20100,
			TeamBEquipmentValue: 8000,
			TeamAEconomyType:    constants.EconomyTypeSemi,
			TeamBEconomyType:    constants.EconomyTypeForceBuy,
			TeamAScore:          2,
			TeamBScore:          0,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              3,
			StartTick:           32116,
			FreezeTimeEndTick:   34029,
			EndTick:             43650,
			EndOfficiallyTick:   44299,
			StartFrame:          15966,
			FreezeTimeEndFrame:  16921,
			EndFrame:            21727,
			EndOfficiallyFrame:  22049,
			TeamAStartMoney:     21600,
			TeamBStartMoney:     10250,
			TeamAEquipmentValue: 23200,
			TeamBEquipmentValue: 1200,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeEco,
			TeamAScore:          3,
			TeamBScore:          0,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              4,
			StartTick:           44299,
			FreezeTimeEndTick:   46213,
			EndTick:             52511,
			EndOfficiallyTick:   53155,
			StartFrame:          22049,
			FreezeTimeEndFrame:  23004,
			EndFrame:            26148,
			EndOfficiallyFrame:  26470,
			TeamAStartMoney:     28550,
			TeamBStartMoney:     21950,
			TeamAEquipmentValue: 27600,
			TeamBEquipmentValue: 22400,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          3,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              5,
			StartTick:           53155,
			FreezeTimeEndTick:   55075,
			EndTick:             67401,
			EndOfficiallyTick:   68045,
			StartFrame:          26470,
			FreezeTimeEndFrame:  27422,
			EndFrame:            33573,
			EndOfficiallyFrame:  33895,
			TeamAStartMoney:     25150,
			TeamBStartMoney:     17900,
			TeamAEquipmentValue: 25750,
			TeamBEquipmentValue: 27750,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          4,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              6,
			StartTick:           68045,
			FreezeTimeEndTick:   69965,
			EndTick:             76514,
			EndOfficiallyTick:   77158,
			StartFrame:          33895,
			FreezeTimeEndFrame:  34851,
			EndFrame:            38116,
			EndOfficiallyFrame:  38438,
			TeamAStartMoney:     18450,
			TeamBStartMoney:     12150,
			TeamAEquipmentValue: 27950,
			TeamBEquipmentValue: 12150,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeForceBuy,
			TeamAScore:          5,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              7,
			StartTick:           77158,
			FreezeTimeEndTick:   79078,
			EndTick:             86430,
			EndOfficiallyTick:   87081,
			StartFrame:          38438,
			FreezeTimeEndFrame:  39394,
			EndFrame:            43050,
			EndOfficiallyFrame:  43372,
			TeamAStartMoney:     22600,
			TeamBStartMoney:     11100,
			TeamAEquipmentValue: 27800,
			TeamBEquipmentValue: 1700,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeEco,
			TeamAScore:          6,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              8,
			StartTick:           87081,
			FreezeTimeEndTick:   88995,
			EndTick:             96919,
			EndOfficiallyTick:   97570,
			StartFrame:          43372,
			FreezeTimeEndFrame:  44327,
			EndFrame:            48269,
			EndOfficiallyFrame:  48592,
			TeamAStartMoney:     22500,
			TeamBStartMoney:     21800,
			TeamAEquipmentValue: 31200,
			TeamBEquipmentValue: 22500,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          7,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              9,
			StartTick:           97570,
			FreezeTimeEndTick:   99485,
			EndTick:             104263,
			EndOfficiallyTick:   104905,
			StartFrame:          48592,
			FreezeTimeEndFrame:  49548,
			EndFrame:            51932,
			EndOfficiallyFrame:  52253,
			TeamAStartMoney:     37150,
			TeamBStartMoney:     15100,
			TeamAEquipmentValue: 30950,
			TeamBEquipmentValue: 5900,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeSemi,
			TeamAScore:          8,
			TeamBScore:          1,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              10,
			StartTick:           104905,
			FreezeTimeEndTick:   106825,
			EndTick:             121105,
			EndOfficiallyTick:   121747,
			StartFrame:          52253,
			FreezeTimeEndFrame:  53210,
			EndFrame:            60322,
			EndOfficiallyFrame:  60643,
			TeamAStartMoney:     42500,
			TeamBStartMoney:     26500,
			TeamAEquipmentValue: 31650,
			TeamBEquipmentValue: 26250,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          8,
			TeamBScore:          2,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              11,
			StartTick:           121747,
			FreezeTimeEndTick:   123667,
			EndTick:             138268,
			EndOfficiallyTick:   138908,
			StartFrame:          60643,
			FreezeTimeEndFrame:  61599,
			EndFrame:            68861,
			EndOfficiallyFrame:  69181,
			TeamAStartMoney:     42000,
			TeamBStartMoney:     18900,
			TeamAEquipmentValue: 30850,
			TeamBEquipmentValue: 26450,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          9,
			TeamBScore:          2,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              12,
			StartTick:           138908,
			FreezeTimeEndTick:   140829,
			EndTick:             152397,
			EndOfficiallyTick:   153039,
			StartFrame:          69181,
			FreezeTimeEndFrame:  70134,
			EndFrame:            75911,
			EndOfficiallyFrame:  76232,
			TeamAStartMoney:     31250,
			TeamBStartMoney:     14900,
			TeamAEquipmentValue: 31550,
			TeamBEquipmentValue: 2650,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeEco,
			TeamAScore:          9,
			TeamBScore:          3,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              13,
			StartTick:           153039,
			FreezeTimeEndTick:   154960,
			EndTick:             166307,
			EndOfficiallyTick:   166951,
			StartFrame:          76232,
			FreezeTimeEndFrame:  77185,
			EndFrame:            82851,
			EndOfficiallyFrame:  83173,
			TeamAStartMoney:     23300,
			TeamBStartMoney:     30500,
			TeamAEquipmentValue: 23500,
			TeamBEquipmentValue: 28850,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          10,
			TeamBScore:          3,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              14,
			StartTick:           166951,
			FreezeTimeEndTick:   168872,
			EndTick:             185917,
			EndOfficiallyTick:   186562,
			StartFrame:          83173,
			FreezeTimeEndFrame:  84130,
			EndFrame:            92643,
			EndOfficiallyFrame:  92963,
			TeamAStartMoney:     17550,
			TeamBStartMoney:     16450,
			TeamAEquipmentValue: 30800,
			TeamBEquipmentValue: 16550,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeForceBuy,
			TeamAScore:          10,
			TeamBScore:          4,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              15,
			StartTick:           186562,
			FreezeTimeEndTick:   188477,
			EndTick:             201604,
			EndOfficiallyTick:   201604,
			StartFrame:          92963,
			FreezeTimeEndFrame:  93918,
			EndFrame:            100447,
			EndOfficiallyFrame:  100447,
			TeamAStartMoney:     10250,
			TeamBStartMoney:     18600,
			TeamAEquipmentValue: 21700,
			TeamBEquipmentValue: 27950,
			TeamAEconomyType:    constants.EconomyTypeForceBuy,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          10,
			TeamBScore:          5,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              16,
			StartTick:           220854,
			FreezeTimeEndTick:   222768,
			EndTick:             238951,
			EndOfficiallyTick:   239591,
			StartFrame:          110006,
			FreezeTimeEndFrame:  110962,
			EndFrame:            119042,
			EndOfficiallyFrame:  119362,
			TeamAStartMoney:     4000,
			TeamBStartMoney:     4000,
			TeamAEquipmentValue: 4300,
			TeamBEquipmentValue: 4350,
			TeamAEconomyType:    constants.EconomyTypePistol,
			TeamBEconomyType:    constants.EconomyTypePistol,
			TeamAScore:          10,
			TeamBScore:          6,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              17,
			StartTick:           239591,
			FreezeTimeEndTick:   241511,
			EndTick:             248901,
			EndOfficiallyTick:   249553,
			StartFrame:          119362,
			FreezeTimeEndFrame:  120318,
			EndFrame:            124008,
			EndOfficiallyFrame:  124331,
			TeamAStartMoney:     13200,
			TeamBStartMoney:     19950,
			TeamAEquipmentValue: 2200,
			TeamBEquipmentValue: 19250,
			TeamAEconomyType:    constants.EconomyTypeEco,
			TeamBEconomyType:    constants.EconomyTypeSemi,
			TeamAScore:          10,
			TeamBScore:          7,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              18,
			StartTick:           249553,
			FreezeTimeEndTick:   251466,
			EndTick:             259922,
			EndOfficiallyTick:   260562,
			StartFrame:          124331,
			FreezeTimeEndFrame:  125284,
			EndFrame:            129504,
			EndOfficiallyFrame:  129824,
			TeamAStartMoney:     21000,
			TeamBStartMoney:     22000,
			TeamAEquipmentValue: 21750,
			TeamBEquipmentValue: 21550,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeSemi,
			TeamAScore:          10,
			TeamBScore:          8,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              19,
			StartTick:           260562,
			FreezeTimeEndTick:   262482,
			EndTick:             276829,
			EndOfficiallyTick:   277474,
			StartFrame:          129824,
			FreezeTimeEndFrame:  130780,
			EndFrame:            137948,
			EndOfficiallyFrame:  138268,
			TeamAStartMoney:     13150,
			TeamBStartMoney:     31250,
			TeamAEquipmentValue: 2600,
			TeamBEquipmentValue: 25700,
			TeamAEconomyType:    constants.EconomyTypeEco,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          10,
			TeamBScore:          9,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              20,
			StartTick:           277474,
			FreezeTimeEndTick:   282585,
			EndTick:             293957,
			EndOfficiallyTick:   294606,
			StartFrame:          138268,
			FreezeTimeEndFrame:  140819,
			EndFrame:            146497,
			EndOfficiallyFrame:  146819,
			TeamAStartMoney:     30450,
			TeamBStartMoney:     33250,
			TeamAEquipmentValue: 27650,
			TeamBEquipmentValue: 32450,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          10,
			TeamBScore:          10,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              21,
			StartTick:           294606,
			FreezeTimeEndTick:   296520,
			EndTick:             310958,
			EndOfficiallyTick:   311600,
			StartFrame:          146819,
			FreezeTimeEndFrame:  147775,
			EndFrame:            154971,
			EndOfficiallyFrame:  155292,
			TeamAStartMoney:     24900,
			TeamBStartMoney:     29250,
			TeamAEquipmentValue: 22800,
			TeamBEquipmentValue: 32350,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          11,
			TeamBScore:          10,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              22,
			StartTick:           311600,
			FreezeTimeEndTick:   313521,
			EndTick:             326162,
			EndOfficiallyTick:   326802,
			StartFrame:          155292,
			FreezeTimeEndFrame:  156245,
			EndFrame:            162553,
			EndOfficiallyFrame:  162873,
			TeamAStartMoney:     21450,
			TeamBStartMoney:     22650,
			TeamAEquipmentValue: 25250,
			TeamBEquipmentValue: 23250,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          11,
			TeamBScore:          11,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              23,
			StartTick:           326802,
			FreezeTimeEndTick:   328722,
			EndTick:             337285,
			EndOfficiallyTick:   337936,
			StartFrame:          162873,
			FreezeTimeEndFrame:  163830,
			EndFrame:            168099,
			EndOfficiallyFrame:  168422,
			TeamAStartMoney:     10750,
			TeamBStartMoney:     17150,
			TeamAEquipmentValue: 1500,
			TeamBEquipmentValue: 32350,
			TeamAEconomyType:    constants.EconomyTypeEco,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          11,
			TeamBScore:          12,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              24,
			StartTick:           337936,
			FreezeTimeEndTick:   339851,
			EndTick:             345543,
			EndOfficiallyTick:   346192,
			StartFrame:          168422,
			FreezeTimeEndFrame:  169378,
			EndFrame:            172215,
			EndOfficiallyFrame:  172537,
			TeamAStartMoney:     19750,
			TeamBStartMoney:     23250,
			TeamAEquipmentValue: 7150,
			TeamBEquipmentValue: 33800,
			TeamAEconomyType:    constants.EconomyTypeSemi,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          11,
			TeamBScore:          13,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              25,
			StartTick:           346192,
			FreezeTimeEndTick:   348107,
			EndTick:             354431,
			EndOfficiallyTick:   355080,
			StartFrame:          172537,
			FreezeTimeEndFrame:  173493,
			EndFrame:            176634,
			EndOfficiallyFrame:  176956,
			TeamAStartMoney:     25500,
			TeamBStartMoney:     27400,
			TeamAEquipmentValue: 24500,
			TeamBEquipmentValue: 32150,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          11,
			TeamBScore:          14,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              26,
			StartTick:           355080,
			FreezeTimeEndTick:   362711,
			EndTick:             375301,
			EndOfficiallyTick:   375953,
			StartFrame:          176956,
			FreezeTimeEndFrame:  180765,
			EndFrame:            187052,
			EndOfficiallyFrame:  187375,
			TeamAStartMoney:     16800,
			TeamBStartMoney:     25550,
			TeamAEquipmentValue: 17000,
			TeamBEquipmentValue: 33300,
			TeamAEconomyType:    constants.EconomyTypeForceBuy,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          12,
			TeamBScore:          14,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              27,
			StartTick:           375953,
			FreezeTimeEndTick:   377866,
			EndTick:             386757,
			EndOfficiallyTick:   387406,
			StartFrame:          187375,
			FreezeTimeEndFrame:  188330,
			EndFrame:            192768,
			EndOfficiallyFrame:  193090,
			TeamAStartMoney:     18650,
			TeamBStartMoney:     21800,
			TeamAEquipmentValue: 21600,
			TeamBEquipmentValue: 22000,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeForceBuy,
			TeamAScore:          13,
			TeamBScore:          14,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              28,
			StartTick:           387406,
			FreezeTimeEndTick:   389321,
			EndTick:             399279,
			EndOfficiallyTick:   399919,
			StartFrame:          193090,
			FreezeTimeEndFrame:  194046,
			EndFrame:            199024,
			EndOfficiallyFrame:  199344,
			TeamAStartMoney:     20100,
			TeamBStartMoney:     10900,
			TeamAEquipmentValue: 24600,
			TeamBEquipmentValue: 1900,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeEco,
			TeamAScore:          14,
			TeamBScore:          14,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              29,
			StartTick:           399919,
			FreezeTimeEndTick:   401839,
			EndTick:             415200,
			EndOfficiallyTick:   415842,
			StartFrame:          199344,
			FreezeTimeEndFrame:  200300,
			EndFrame:            206972,
			EndOfficiallyFrame:  207292,
			TeamAStartMoney:     26600,
			TeamBStartMoney:     22200,
			TeamAEquipmentValue: 26550,
			TeamBEquipmentValue: 21950,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeSemi,
			TeamAScore:          14,
			TeamBScore:          15,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
		{
			Number:              30,
			StartTick:           415842,
			FreezeTimeEndTick:   417763,
			EndTick:             429659,
			EndOfficiallyTick:   429659,
			StartFrame:          207292,
			FreezeTimeEndFrame:  208239,
			EndFrame:            214176,
			EndOfficiallyFrame:  214176,
			TeamAStartMoney:     22250,
			TeamBStartMoney:     21700,
			TeamAEquipmentValue: 22250,
			TeamBEquipmentValue: 32250,
			TeamAEconomyType:    constants.EconomyTypeFull,
			TeamBEconomyType:    constants.EconomyTypeFull,
			TeamAScore:          14,
			TeamBScore:          16,
			TeamAName:           expectedTeamNameA,
			TeamBName:           expectedTeamNameB,
		},
	}

	assertion.AssertRounds(t, match, rounds)
}
