Files
tactical-shooter/tests/team.gd
T
shawn 8c790357d3 Add automated test framework and 21 regression tests
- tests/runner.gd: lightweight headless test runner (TAP format output)
- tests/weapons.gd: 6 tests for weapon registry and stats
- tests/team.gd: 5 tests for team assignment and balancing
- tests/economy.gd: 6 tests for economy constants and loss streaks
- tests/bootstrapper.gd: 4 tests for LAN bootstrapper input parsing

Run with: godot --headless -s tests/runner.gd --path .

All 21 tests pass on Linux and Windows.
2026-07-03 01:29:08 -04:00

59 lines
1.9 KiB
GDScript

extends RefCounted
## Team management tests.
## Team enum: NONE=-1, T=0, CT=1
const TeamManager := preload("res://examples/multiplayer-fps/scripts/team-manager.gd")
func test_team_enum_values() -> String:
var e := ""
if TeamManager.Team.NONE != -1: e += " NONE should be -1"
if TeamManager.Team.T != 0: e += " T should be 0"
if TeamManager.Team.CT != 1: e += " CT should be 1"
return e
func test_get_team_name() -> String:
var tm := TeamManager.new()
var e := ""
if tm.get_team_name(TeamManager.Team.T) != "Terrorists":
e += " T team name wrong"
if tm.get_team_name(TeamManager.Team.CT) != "Counter-Terrorists":
e += " CT team name wrong"
if tm.get_team_name(TeamManager.Team.NONE) != "Unassigned":
e += " NONE team name wrong"
return e
func test_empty_assignments() -> String:
var tm := TeamManager.new()
if tm.get_team(999) != TeamManager.Team.NONE:
return "Unknown peer should return NONE"
if tm.get_team_members(TeamManager.Team.T).size() != 0:
return "No T members yet"
return ""
func test_auto_assign_balances() -> String:
var tm := TeamManager.new()
tm.assignments[101] = TeamManager.Team.T
tm.assignments[102] = TeamManager.Team.CT
# T=1, CT=1 — next goes to T (first alphabetically when tied)
var team_a := tm.auto_assign(103)
if team_a != TeamManager.Team.T:
return "3rd peer should join T when tied, got " + str(team_a)
# T=2, CT=1 — next goes to CT
var team_b := tm.auto_assign(104)
if team_b != TeamManager.Team.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 tm := TeamManager.new()
tm.assignments[101] = TeamManager.Team.CT
tm.assignments[102] = TeamManager.Team.CT
# T=0, CT=2
var team := tm.auto_assign(103)
if team != TeamManager.Team.T:
return "Peer should join T (0 members) over CT (2 members), got " + str(team)
return ""