 the ScoreAttempt keeps track of the ID of the team to which the Player belongs during the attempt.
--
function TestScoreAttempt:testKeepsTrackOfTeamId()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  -- CLA
  local claScoreAttempt = ScoreAttempt(126356, LuaServerApiMock.TEAM_CLA)
  self:assertEquals(LuaServerApiMock.TEAM_CLA, claScoreAttempt:getTeamId())

  claScoreAttempt:finish(136900)
  self:assertEquals(LuaServerApiMock.TEAM_CLA, claScoreAttempt:getTeamId())


  -- RVSF
  local rvsfScoreAttempt = ScoreAttempt(512316, LuaServerApiMock.TEAM_RVSF)
  self:assertEquals(LuaServerApiMock.TEAM_RVSF, rvsfScoreAttempt:getTeamId())

  rvsfScoreAttempt:finish(617003)
  self:assertEquals(LuaServerApiMock.TEAM_RVSF, rvsfScoreAttempt:getTeamId())

end

---
-- Checks that the ScoreAttempt can calculate the time that the player took to score.
--
function TestScoreAttempt:testCanCalculateDuration()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  -- Score attempt that steals the flag from the original position
  local scoreAttemptA = ScoreAttempt(13214, LuaServerApiMock.TEAM_RVSF)
  scoreAttemptA:finish(49401)
  self:assertTrue(scoreAttemptA:isFinished())
  self:assertEquals(36187, scoreAttemptA:getDuration())

  -- Score attempt that does not steal the flag from the original position
  local scoreAttemptB = ScoreAttempt(512316, LuaServerApiMock.TEAM_RVSF)
  scoreAttemptB:finish(617003)
  self:assertTrue(scoreAttemptB:isFinished())
  self:assertEquals(104687, scoreAttemptB:getDuration())

end


---
-- Checks that the ScoreAttempt weapon is updated to PISTOL if PISTOL is used.
--
function TestScoreAttempt:testUpdatesScoreWeaponToPistolIfPistolIsUsed()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  local scoreAttempt = ScoreAttempt(13214, LuaServerApiMock.TEAM_CLA)
  self:assertEquals(LuaServerApiMock.GUN_KNIFE, scoreAttempt:getWeaponId()) -- Should be KNIFE initially

  scoreAttempt:updateWeaponIfRequired(LuaServerApiMock.GUN_PISTOL) -- PISTOL was used
  self:assertEquals(LuaServerApiMock.GUN_PISTOL, scoreAttempt:getWeaponId()) -- Should now be PISTOL

end

---
-- Checks that the ScoreAttempt weapon is updated to PISTOL if AKIMBO is used.
--
function TestScoreAttempt:testUpdatesScoreWeaponToPistolIfAkimboIsUsed()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  local scoreAttempt = ScoreAttempt(13214, LuaServerApiMock.TEAM_RVSF)
  self:assertEquals(LuaServerApiMock.GUN_KNIFE, scoreAttempt:getWeaponId()) -- Should be KNIFE initially

  scoreAttempt:updateWeaponIfRequired(LuaServerApiMock.GUN_AKIMBO) -- AKIMBO was used
  self:assertEquals(LuaServerApiMock.GUN_PISTOL, scoreAttempt:getWeaponId()) -- Should now be PISTOL

end

---
-- Checks that the ScoreAttempt weapon is updated to <primary weapon> if <primary weapon> is used.
--
function TestScoreAttempt:testUpdatesScoreWeaponToPrimaryIfPrimaryIsUsed()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi

  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(LuaServerApiMock.GUN_ASSAULT)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(LuaServerApiMock.GUN_SUBGUN)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(LuaServerApiMock.GUN_CARBINE)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(LuaServerApiMock.GUN_SNIPER)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(LuaServerApiMock.GUN_SHOTGUN)

end

---
-- Checks that the ScoreAttempt weapon is updated to a given <primary weapon> if <primary weapon> is used.
--
-- @tparam int _primaryWeaponId The ID of the primary weapon to check
--
function TestScoreAttempt:updatesScoreWeaponToPrimaryIfPrimaryIsUsed(_primaryWeaponId)

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  local scoreAttempt = ScoreAttempt(13214, LuaServerApiMock.TEAM_CLA)
  self:assertEquals(LuaServerApiMock.GUN_KNIFE, scoreAttempt:getWeaponId()) -- Should be KNIFE initially

  scoreAttempt:updateWeaponIfRequired(_primaryWeaponId) -- <primary weapon> was used
  self:assertEquals(_primaryWeaponId, scoreAttempt:getWeaponId()) -- Should now be <primary weapon>

end


---
-- Checks that the ScoreAttempt weapon is updated to <primary weapon> if <primary weapon> is used after
-- using PISTOL.
--
function TestScoreAttempt:testUpdatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi

  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(LuaServerApiMock.GUN_ASSAULT)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(LuaServerApiMock.GUN_SUBGUN)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(LuaServerApiMock.GUN_CARBINE)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(LuaServerApiMock.GUN_SNIPER)
  self:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(LuaServerApiMock.GUN_SHOTGUN)

end

---
-- Checks that the ScoreAttempt weapon is updated to a given <primary weapon> if <primary weapon> is used
-- after using PISTOL.
--
-- @tparam int _primaryWeaponId The ID of the primary weapon to check
--
function TestScoreAttempt:updatesScoreWeaponToPrimaryIfPrimaryIsUsedAfterPistolUsage(_primaryWeaponId)

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi
  local ScoreAttempt = self.testClass

  local scoreAttempt = ScoreAttempt(13214, LuaServerApiMock.TEAM_RVSF)
  self:assertEquals(LuaServerApiMock.GUN_KNIFE, scoreAttempt:getWeaponId()) -- Should be KNIFE initially

  scoreAttempt:updateWeaponIfRequired(LuaServerApiMock.GUN_PISTOL) -- PISTOL was used
  self:assertEquals(LuaServerApiMock.GUN_PISTOL, scoreAttempt:getWeaponId()) -- Should now be PISTOL

  scoreAttempt:updateWeaponIfRequired(_primaryWeaponId) -- <primary weapon> was used
  self:assertEquals(_primaryWeaponId, scoreAttempt:getWeaponId()) -- Should now be <primary weapon>

end


---
-- Checks that the ScoreAttempt weapon is not updated when the same weapon as the current ScoreAttempt
-- weapon is used.
--
function TestScoreAttempt:testDoesNotUpdateScoreWeaponIfSameWeaponAsCurrentScoreAttemptWeaponIsUsed()

  local LuaServerApiMock = self.dependencyMocks.LuaServerApi

  self:doesNotUpdateScoreWeaponIfSameWeaponAsCurrentScoreAttemptWeaponIsUsed(LuaServerApiMock.GUN_ASSAULT)
  self:doesNotUpdateScoreWeaponIfSameWeaponAsCurrentScoreAttemptWeaponIsUsed(LuaServerApiMock.GUN_SUBGUN)
  self:doesNotUpdateScoreWeaponIfSameWeaponAsCurrentScoreAttemptWeaponIsUsed(LuaServerApiMock.GUN_