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"

	"github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/common"
	"github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs/events"
)

func TestFaceit_2d199377f1794b488ac7e5714c754639_Mirage(t *testing.T) {
	demoName := "faceit_2d199377-f179-4b48-8ac7-e5714c754639_mirage"
	demoPath := testsutils.GetDemoPath("csgo", demoName)
	match, err := api.AnalyzeDemo(demoPath, api.AnalyzeDemoOptions{
		Source: constants.DemoSourceFaceIt,
	})
	if err != nil {
		t.Error(err)
	}

	expectedTeamNameA := "team_Darkwow1"
	expectedTeamNameB := "team_wiking-_-"
	expectedRoundCount := 29
	expectedPlayerCount := 10
	expectedScoreTeamA := 13
	expectedScoreTeamB := 16
	expectedScoreFirstHalfTeamA := 7
	expectedScoreFirstHalfTeamB := 8
	expectedScoreSecondHalfTeamA := 6
	expectedScoreSecondHalfTeamB := 8
	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 len(match.Rounds) != 29 {
		t.Errorf("expected %d rounds but got %d", 29, len(match.Rounds))
	}
	if len(match.Players()) != 10 {
		t.Errorf("expected %d players but got %d", 10, len(match.Players()))
	}
	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:         13366,
			StartFrame:        6652,
			EndTick:           21776,
			FreezeTimeEndTick: 14891,
			TeamAStartMoney:   4000,
			TeamBStartMoney:   4000,
			TeamAEconomyType:  constants.EconomyTypePistol,
			TeamBEconomyType:  constants.EconomyTypePistol,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        0,
			TeamBScore:        1,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            2,
			StartTick:         22418,
			StartFrame:        11154,
			EndTick:           33897,
			FreezeTimeEndTick: 23943,
			TeamAStartMoney:   10200,
			TeamBStartMoney:   18700,
			EndReason:         events.RoundEndReasonBombDefused,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        1,
			TeamBScore:        1,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            3,
			StartTick:         34537,
			StartFrame:        17208,
			FreezeTimeEndTick: 36074,
			EndTick:           43530,
			TeamAStartMoney:   19500,
			TeamBStartMoney:   14500,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        2,
			TeamBScore:        1,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            4,
			StartTick:         44179,
			StartFrame:        22017,
			FreezeTimeEndTick: 45707,
			EndTick:           52049,
			TeamAStartMoney:   25100,
			TeamBStartMoney:   17600,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        3,
			TeamBScore:        1,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            5,
			StartTick:         52689,
			StartFrame:        26267,
			FreezeTimeEndTick: 54226,
			EndTick:           66592,
			TeamAStartMoney:   25500,
			TeamBStartMoney:   22750,
			EndReason:         events.RoundEndReasonTargetBombed,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        3,
			TeamBScore:        2,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            6,
			StartTick:         67232,
			StartFrame:        33527,
			FreezeTimeEndTick: 68768,
			EndTick:           82014,
			TeamAStartMoney:   22900,
			TeamBStartMoney:   19400,
			EndReason:         events.RoundEndReasonBombDefused,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        4,
			TeamBScore:        2,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            7,
			StartTick:         82654,
			StartFrame:        41227,
			FreezeTimeEndTick: 84191,
			EndTick:           96747,
			TeamAStartMoney:   19650,
			TeamBStartMoney:   15500,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        5,
			TeamBScore:        2,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            8,
			StartTick:         97389,
			StartFrame:        48584,
			FreezeTimeEndTick: 98926,
			EndTick:           105620,
			TeamAStartMoney:   21150,
			TeamBStartMoney:   24050,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        5,
			TeamBScore:        3,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            9,
			StartTick:         106272,
			StartFrame:        53004,
			FreezeTimeEndTick: 107798,
			EndTick:           112818,
			TeamAStartMoney:   10350,
			TeamBStartMoney:   19200,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        5,
			TeamBScore:        4,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            10,
			StartTick:         113460,
			StartFrame:        56597,
			FreezeTimeEndTick: 114997,
			EndTick:           125907,
			TeamAStartMoney:   10950,
			TeamBStartMoney:   33250,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        5,
			TeamBScore:        5,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            11,
			StartTick:         126562,
			StartFrame:        63131,
			FreezeTimeEndTick: 128086,
			EndTick:           134546,
			TeamAStartMoney:   20950,
			TeamBStartMoney:   36300,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        5,
			TeamBScore:        6,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            12,
			StartTick:         135188,
			StartFrame:        67437,
			FreezeTimeEndTick: 136724,
			EndTick:           151012,
			TeamAStartMoney:   15600,
			TeamBStartMoney:   46550,
			EndReason:         events.RoundEndReasonTargetBombed,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        5,
			TeamBScore:        7,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            13,
			StartTick:         151652,
			StartFrame:        75657,
			FreezeTimeEndTick: 153188,
			EndTick:           161384,
			TeamAStartMoney:   28200,
			TeamBStartMoney:   47150,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        6,
			TeamBScore:        7,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            14,
			StartTick:         162026,
			StartFrame:        80833,
			FreezeTimeEndTick: 163563,
			EndTick:           170265,
			TeamAStartMoney:   21500,
			TeamBStartMoney:   37450,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        7,
			TeamBScore:        7,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            15,
			StartTick:         170918,
			StartFrame:        85262,
			FreezeTimeEndTick: 172443,
			EndTick:           178775,
			TeamAStartMoney:   34050,
			TeamBStartMoney:   20750,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        7,
			TeamBScore:        8,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamCounterTerrorists,
			TeamBSide:         common.TeamTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            16,
			StartTick:         180706,
			StartFrame:        90144,
			FreezeTimeEndTick: 182231,
			EndTick:           194505,
			TeamAStartMoney:   4000,
			TeamBStartMoney:   4000,
			TeamAEconomyType:  constants.EconomyTypePistol,
			TeamBEconomyType:  constants.EconomyTypePistol,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        7,
			TeamBScore:        9,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            17,
			StartTick:         195145,
			StartFrame:        97358,
			FreezeTimeEndTick: 196682,
			EndTick:           202336,
			TeamAStartMoney:   10850,
			TeamBStartMoney:   18500,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        7,
			TeamBScore:        10,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            18,
			StartTick:         202991,
			StartFrame:        101264,
			FreezeTimeEndTick: 204516,
			EndTick:           214702,
			TeamAStartMoney:   15050,
			TeamBStartMoney:   20350,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        7,
			TeamBScore:        11,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            19,
			StartTick:         215342,
			StartFrame:        107435,
			FreezeTimeEndTick: 216878,
			EndTick:           224292,
			TeamAStartMoney:   24950,
			TeamBStartMoney:   34000,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        8,
			TeamBScore:        11,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            20,
			StartTick:         224932,
			StartFrame:        112221,
			FreezeTimeEndTick: 226469,
			EndTick:           237641,
			TeamAStartMoney:   17850,
			TeamBStartMoney:   30900,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        8,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            21,
			StartTick:         238293,
			StartFrame:        118885,
			FreezeTimeEndTick: 239819,
			EndTick:           246067,
			TeamAStartMoney:   28450,
			TeamBStartMoney:   21900,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        9,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            22,
			StartTick:         246721,
			StartFrame:        123088,
			FreezeTimeEndTick: 248246,
			EndTick:           257634,
			TeamAStartMoney:   20950,
			TeamBStartMoney:   15250,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        10,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            23,
			StartTick:         258274,
			StartFrame:        128859,
			FreezeTimeEndTick: 259811,
			EndTick:           266057,
			TeamAStartMoney:   26600,
			TeamBStartMoney:   20000,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        11,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            24,
			StartTick:         266699,
			StartFrame:        133061,
			FreezeTimeEndTick: 268236,
			EndTick:           275601,
			TeamAStartMoney:   42250,
			TeamBStartMoney:   25900,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        12,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            25,
			StartTick:         276252,
			StartFrame:        137814,
			FreezeTimeEndTick: 277777,
			EndTick:           281251,
			TeamAStartMoney:   47800,
			TeamBStartMoney:   16050,
			EndReason:         events.RoundEndReasonTerroristsWin,
			WinnerSide:        common.TeamTerrorists,
			TeamAScore:        13,
			TeamBScore:        12,
			WinnerName:        expectedTeamNameA,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            26,
			StartTick:         281893,
			StartFrame:        140633,
			FreezeTimeEndTick: 283429,
			EndTick:           292683,
			TeamAStartMoney:   49950,
			TeamBStartMoney:   28050,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        13,
			TeamBScore:        13,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            27,
			StartTick:         293323,
			StartFrame:        146337,
			FreezeTimeEndTick: 294860,
			EndTick:           300830,
			TeamAStartMoney:   56950,
			TeamBStartMoney:   17650,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        13,
			TeamBScore:        14,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            28,
			StartTick:         301470,
			StartFrame:        150401,
			FreezeTimeEndTick: 303006,
			EndTick:           313704,
			TeamAStartMoney:   40300,
			TeamBStartMoney:   26700,
			EndReason:         events.RoundEndReasonCTWin,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        13,
			TeamBScore:        15,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
		{
			Number:            29,
			StartTick:         314344,
			StartFrame:        156828,
			FreezeTimeEndTick: 315880,
			EndTick:           332864,
			TeamAStartMoney:   27150,
			TeamBStartMoney:   36100,
			EndReason:         events.RoundEndReasonBombDefused,
			WinnerSide:        common.TeamCounterTerrorists,
			TeamAScore:        13,
			TeamBScore:        16,
			WinnerName:        expectedTeamNameB,
			TeamASide:         common.TeamTerrorists,
			TeamBSide:         common.TeamCounterTerrorists,
			TeamAName:         expectedTeamNameA,
			TeamBName:         expectedTeamNameB,
		},
	}

	var playerEconomies = []api.PlayerEconomy{
		{
			RoundNumber:    1,
			SteamID64:      76561197960843050,
			Name:           "shocka",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561197965922684,
			Name:           "EMY0R",
			StartMoney:     800,
			MoneySpent:     700,
			EquipmentValue: 900,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198015368633,
			Name:           "Darkwow1",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198060560365,
			Name:           "nurba-",
			StartMoney:     800,
			MoneySpent:     700,
			EquipmentValue: 900,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198064225626,
			Name:           "spellfull",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198065511704,
			Name:           "flaaMe-",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198113666193,
			Name:           "ZywOo",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198165817305,
			Name:           "wiking-_-",
			StartMoney:     800,
			MoneySpent:     700,
			EquipmentValue: 900,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198303381179,
			Name:           "kade0",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    1,
			SteamID64:      76561198994025402,
			Name:           "1Debo",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561197960843050,
			Name:           "shocka",
			StartMoney:     3700,
			MoneySpent:     2400,
			EquipmentValue: 3250,
			Type:           constants.EconomyTypeSemi,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561197965922684,
			Name:           "EMY0R",
			StartMoney:     4250,
			MoneySpent:     4000,
			EquipmentValue: 4200,
			Type:           constants.EconomyTypeFull,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198015368633,
			Name:           "Darkwow1",
			StartMoney:     2050,
			MoneySpent:     2000,
			EquipmentValue: 2000,
			Type:           constants.EconomyTypeForceBuy,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198060560365,
			Name:           "nurba-",
			StartMoney:     2000,
			MoneySpent:     2000,
			EquipmentValue: 2000,
			Type:           constants.EconomyTypeForceBuy,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198064225626,
			Name:           "spellfull",
			StartMoney:     2050,
			MoneySpent:     2000,
			EquipmentValue: 2200,
			Type:           constants.EconomyTypeForceBuy,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198065511704,
			Name:           "flaaMe-",
			StartMoney:     2050,
			MoneySpent:     2000,
			EquipmentValue: 2000,
			Type:           constants.EconomyTypeForceBuy,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198113666193,
			Name:           "ZywOo",
			StartMoney:     4000,
			MoneySpent:     3500,
			EquipmentValue: 3700,
			Type:           constants.EconomyTypeSemi,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198165817305,
			Name:           "wiking-_-",
			StartMoney:     3350,
			MoneySpent:     3150,
			EquipmentValue: 3350,
			Type:           constants.EconomyTypeSemi,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198303381179,
			Name:           "kade0",
			StartMoney:     2050,
			MoneySpent:     2000,
			EquipmentValue: 2000,
			Type:           constants.EconomyTypeForceBuy,
		},
		{
			RoundNumber:    2,
			SteamID64:      76561198994025402,
			Name:           "1Debo",
			StartMoney:     3400,
			MoneySpent:     3350,
			EquipmentValue: 4200,
			Type:           constants.EconomyTypeFull,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561197960843050,
			Name:           "shocka",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561197965922684,
			Name:           "EMY0R",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198015368633,
			Name:           "Darkwow1",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198060560365,
			Name:           "nurba-",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198064225626,
			Name:           "spellfull",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198065511704,
			Name:           "flaaMe-",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198113666193,
			Name:           "ZywOo",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198165817305,
			Name:           "wiking-_-",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198303381179,
			Name:           "kade0",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
		{
			RoundNumber:    16,
			SteamID64:      76561198994025402,
			Name:           "1Debo",
			StartMoney:     800,
			MoneySpent:     650,
			EquipmentValue: 850,
			Type:           constants.EconomyTypePistol,
		},
	}

	assertion.AssertRounds(t, match, rounds)
	assertion.AssertPlayerEconomies(t, match, playerEconomies)
}
