extends RefCounted ## Team management tests — self-contained, no TeamManager instantiation. ## Team enums: NONE=-1, T=0, CT=1 # Test enum values directly (mirrors TeamManager.Team) const T_NONE := -1 const T_T := 0 const T_CT := 1 func _get_team_name(team: int) -> String: match team: T_T: return "Terrorists" T_CT: return "Counter-Terrorists" _: return "Unassigned" func _get_team_members(assignments: Dictionary, team: int) -> Array: var members: Array = [] for peer_id in assignments: if assignments[peer_id] == team: members.append(peer_id) return members func _auto_assign(assignments: Dictionary, peer_id: int) -> int: var t_count := _get_team_members(assignments, T_T).size() var ct_count := _get_team_members(assignments, T_CT).size() return T_T if t_count <= ct_count else T_CT func test_team_enum_values() -> String: var e := "" if T_NONE != -1: e += " NONE should be -1" if T_T != 0: e += " T should be 0" if T_CT != 1: e += " CT should be 1" return e func test_get_team_name() -> String: var e := "" if _get_team_name(T_T) != "Terrorists": e += " T team name wrong" if _get_team_name(T_CT) != "Counter-Terrorists": e += " CT team name wrong" if _get_team_name(T_NONE) != "Unassigned": e += " NONE team name wrong" if _get_team_name(99) != "Unassigned": e += " Unknown team name wrong" return e func test_empty_assignments() -> String: var assignments := {} if _get_team_members(assignments, T_T).size() != 0: return "No T members yet" if _get_team_members(assignments, T_CT).size() != 0: return "No CT members yet" return "" func test_auto_assign_balances() -> String: var assignments := { 101: T_T, 102: T_CT, } # T=1, CT=1 — next goes to T (first alphabetically when tied) var team_a := _auto_assign(assignments, 103) if team_a != T_T: return "3rd peer should join T when tied, got " + str(team_a) # T=2, CT=1 — but auto_assign only looks at current, doesn't modify # We need to add the result to test next round assignments[103] = team_a var team_b := _auto_assign(assignments, 104) if team_b != T_CT: return "4th peer should join CT when T has fewer, got " + str(team_b) return "" func test_auto_assign_to_undersized_team() -> String: var assignments := { 101: T_CT, 102: T_CT, } # T=0, CT=2 var team := _auto_assign(assignments, 103) if team != T_T: return "Peer should join T (0 members) over CT (2 members), got " + str(team) return "" func test_get_team_returns_none_for_unknown() -> String: var assignments := {} # Direct inline of get_team: assignments.get(peer_id, T_NONE) if assignments.get(999, T_NONE) != T_NONE: return "Unknown peer should return NONE" return ""